我知道sed可以用来删除文件中的特定行:
sed -i "/pattern/d" file
虽然我的案例模式包括斜杠,例如/var/log
,
所以我知道我需要逃避:sed -i "/\/tmp\/dir/d" file
但是,对于我的情况,模式是动态的,应该是变量
在shell文件中,所以我必须将变量值转换为replace
"/" with "\\/"
,然后得到了这个:
sed -i "/^${pattern_variable//\\//\\\\\\/}$/d" file
我的问题是,有没有更好的可读性更简单的实现?不仅sed
,其他效用也是可以接受的。是否有可能不仅处理slash
而且处理其他各种符号,例如反斜杠或#()?
答案 0 :(得分:1)
您可以使用/
以外的字符:
sed "\#$varHasSlash#d"
示例:
kent$ foo="b/c"
kent$ echo "a
ab/cd
e"|sed "\#$foo#d"
a
e