如何从文件中删除匹配特定模式的行

时间:2014-08-06 14:13:15

标签: bash shell sed line

  1. 我知道sed可以用来删除文件中的特定行:

    sed -i "/pattern/d" file
    
  2. 虽然我的案例模式包括斜杠,例如/var/log

    所以我知道我需要逃避:sed -i "/\/tmp\/dir/d" file

  3. 但是,对于我的情况,模式是动态的,应该是变量 在shell文件中,所以我必须将变量值转换为replace "/" with "\\/",然后得到了这个:

     sed -i "/^${pattern_variable//\\//\\\\\\/}$/d" file
    
  4. 我的问题是,有没有更好的可读性更简单的实现?不仅sed,其他效用也是可以接受的。是否有可能不仅处理slash而且处理其他各种符号,例如反斜杠或#()?

1 个答案:

答案 0 :(得分:1)

您可以使用/以外的字符:

sed "\#$varHasSlash#d"

示例:

kent$  foo="b/c"

kent$  echo "a
ab/cd
e"|sed "\#$foo#d"
a
e