shell sed命令删除指定行,匹配字符用变量替代,变量包含"/"和" "

[root@localhost 3]# cat cmd.cfg
/usr/sbin/restart.sh --reboot
/usr/sbin/control.sh --start

[root@localhost 3]# A="/usr/sbin/control.sh --start"
[root@localhost 3]# sed -i '/$A/d' cmd.cfg

没有删掉
[root@localhost 3]# cat cmd.cfg
/usr/sbin/restart.sh --reboot
/usr/sbin/control.sh --start

[root@localhost 3]#

第1个回答  2015-12-05
改成这样就可以了:
A="\/usr\/sbin\/control.sh --start"
sed -i "/$A/d" cmd.cfg追问

哦, 我没描述清楚,就是A那个变量是调用人传进来的,传进来的串就是这个格式,我不能要求调用者作修改,
我是需要在我执行sed命令的时候,有不有什么办法将传入的这种格式的字符串行匹配并且删除

追答

sed -i "s#$A##" cmd.cfg

追问

OK, 那一行是不在了 但是被一个空行给取代了,能不能不产生空行呢?
我刚这样做,好像可以了
sed -i "s#$A##;/^ *$/d" cmd.cfg
你看看有问题没?谢谢啊

追答

你上面的语句,如果有其他的空行也删除了。
可以这样:
sed "/$(sed 's#/#\\/#g'<<<$A)/d" cmd.cfg

追问

谢谢!

本回答被提问者和网友采纳

shell sed命令删除指定行,匹配字符用变量替代,变量包含"\/"和" "
改成这样就可以了:A="\\\/usr\\\/sbin\\\/control.sh --start"sed -i "\/$A\/d" cmd.cfg

Sed 删除匹配行,匹配的字符用Shell变量替换,且变量里含有斜杠“\/”时...
1)先用s命令将此要删除的路径替换为一个文件中不可能出现的唯一字符串,然后再通过正则匹配该字符串删除该行。可以写在一条sed语句中。name=\/usr\/local\/bin\/sed -i 's#'$name'#EXCLUSIVE#;\/EXCLUSIVE\/d' hello2) grep也支持正则,可以使用grep -v反向过滤。name=\/usr\/local\/bin\/grep -v "$...

shell脚本sed命令如何使用变量替换掉包含指定字符串的整行
sed "s\/zip\/$zip\/g" file sed双引号可以识别变量

shell中怎么删除文件中指定行的
1、删除包含指定关键字的行:sed -i '\/hello\/d' test_temp [root@host]$ cat test_temp world 123 4566 889 2、删除指定行号的行 sed -i '2d' test_temp [root@host]$ cat test_temp world 4566 889 3、sed -i '1d' a.txt删首行 4、sed -i '$d' b.txt删尾行 5、sed -i '...

sed中的替换能用变量吗
2.sed命令使用双引号的情况下直接`shell command`或者$(shell command)引用命令执行的结果 类似的,双引号的情况,如下 echo|sed "s\/^\/$(date +"%Y%m%d").rmvb_\/g"20120108.rmvb_使用环境变量$RANDOM以及旧式命令替换的例子 echo|sed "s\/^\/`echo $RANDOM`.rmvb_\/g"4988.rmvb_总结 在sed语句...

shell常用命令之sed命令
sed命令是Linux中强大的文本处理工具,它主要用于在文件中替换、删除或打印指定的文本。命令的基本格式为"sed -i 's\/旧字符串\/新字符串\/g' 文件名"。这里的-i参数表示修改文件内容,g参数表示全局替换,若不使用g,则只替换每行首次出现的字符串。sed还提供了删除指定行的功能,格式为"sed ‘开始...

18_Shell初识sed和gawk_Linux基础Shell篇
在使用sed编辑器时,可执行包括替换文本在内的多种操作。s命令用于替换文本,可结合g、p、-n、w等替换标记进行更复杂的替换操作。使用地址功能可限定命令作用于特定行或行区间,甚至通过文本模式过滤行。删除行命令d可删除特定行或行区间内的行,结合文本模式增强选择性。插入与附加文本命令则允许在特定...

linux下perl,sed,shell批量替换文件内容
在日程的开发过程中,可能大家会遇到将某个变量名修改 为另一个变量名的情况,如果这个变量是一个局部变量的话,vi足以胜任,但是如果是某个全局变量的话,并且在很多文件中进行了使用,这个时候使用vi就是 一个不明智的选择。这里给出一个简单的shell命令,可以一次性将所有文件中的指定字符串进行修改...

Shell 之变量替换
变量替换之删除指定字符串 在shell脚本中,若要删除变量值中的特定字符串,可以利用替换操作实现。例如,通过使用`sed`命令或正则表达式,可轻松完成这一任务。这种方法灵活多变,适用于多种场景。变量值之替换 若需对变量值进行修改,shell提供直接替换功能。只需在替换操作中指定新值,即可完成替换。这在...

SHELL中SED如何获取变量的值???
sed 在13行后面追加内容简单,sed -i '13 a\\123456789' grub.conf前提是13行有内容才能成功 你试了一下你的命令,AAA变量没有内容啊,如果想用变量就把单引号变成双引号试试

相似回答