Sed 删除匹配行,匹配的字符用Shell变量替换,且变量里含有斜杠“/”时,无法删除 解决办法

原文链接: https://zhidao.baidu.com/question/2138070399877009148.html


修改语法,用#代替”,这个只能用在sed的s替换命令中,如:s/A/B/可以写为s#A#B#

但直接正则匹配 /正则/ 是不可以这样用#替代的。

这里提供两个方法供参考:

1)先用s命令将此要删除的路径替换为一个文件中不可能出现的唯一字符串,然后再通过正则匹配该字符串删除该行。可以写在一条sed语句中。

1
2
name= /usr/local/bin/
sed  -i  's#' $name '#EXCLUSIVE#;/EXCLUSIVE/d'  hello

2) grep也支持正则,可以使用grep -v反向过滤。

1
2
3
name= /usr/local/bin/
grep  - v  "$name"  hello >output
mv  output hello


你可能感兴趣的:(Linux)