当前位置: 技术问答>linux和unix
sed删除特定行的问题
来源: 互联网 发布时间:2017-01-16
本文导语: 写了个sh脚本,目的是在类似conf文件中查找到某个特定项,将其删除。 考虑到有时候会在conf中加#注释,在注释掉的时候也要删除。 $W和$2是需要查找的部分。 sed的部分是这样写的 sed -e "/^$Ws$2.*/d" $CONF_FILE.bak > $CO...
写了个sh脚本,目的是在类似conf文件中查找到某个特定项,将其删除。
考虑到有时候会在conf中加#注释,在注释掉的时候也要删除。
$W和$2是需要查找的部分。
sed的部分是这样写的
sed -e "/^$Ws$2.*/d" $CONF_FILE.bak > $CONF_FILE
删除失败鸟……文件还是原来的样子。返回值为0。
但是类似的一行
sed -e "/^#$Ws$2.*/d" $CONF_FILE.bak > $CONF_FILE
执行成功。也就是说以#开头的可以正常删除。
第一条哪里写的有问题?
考虑到有时候会在conf中加#注释,在注释掉的时候也要删除。
$W和$2是需要查找的部分。
sed的部分是这样写的
sed -e "/^$Ws$2.*/d" $CONF_FILE.bak > $CONF_FILE
删除失败鸟……文件还是原来的样子。返回值为0。
但是类似的一行
sed -e "/^#$Ws$2.*/d" $CONF_FILE.bak > $CONF_FILE
执行成功。也就是说以#开头的可以正常删除。
第一条哪里写的有问题?
|
我实验的:
cat a.txt
1 2
#1 2
vim a.sh
#!/bin/bash
W=1
sed -e "/^$Ws$2.*/d" a.txt
sed -e "/^#$Ws$2.*/d" a.txt
sh -x a.sh 1 2
+ W=1
+ sed -e '/^1s2.*/d' a.txt
#1 2
+ sed -e '/^#1s2.*/d' a.txt
1 2
cat a.txt
1 2
#1 2
vim a.sh
#!/bin/bash
W=1
sed -e "/^$Ws$2.*/d" a.txt
sed -e "/^#$Ws$2.*/d" a.txt
sh -x a.sh 1 2
+ W=1
+ sed -e '/^1s2.*/d' a.txt
#1 2
+ sed -e '/^#1s2.*/d' a.txt
1 2