我有一个映射文件(mapping.txt)
,内容如下:
/incoming
/incoming/
/incoming-foo
/incoming-foo/
使用sed和regex并希望使用以下内容匹配(然后删除)前两行:
sed -i "/\\^/incoming\/?$/d" /mapping.txt
然而,它无效。
基本上,我希望严格按照/incoming
或/incoming/
进行匹配,而不是其他任何内容。
你们提供的任何帮助都会很棒。
答案 0 :(得分:2)
grep
作为替代方案:
grep -vE '^/incoming/?$' file
这将“删除”前两行。如果要将输出写回文件,可以:
grep -vE '^/incoming/?$' file > foo && mv foo file
答案 1 :(得分:1)
您可以在sed
-r
选项中使用替代正则表达式分隔符:
sed -r '\#^/incoming/?$#d' file
/incoming-foo
/incoming-foo/
或者更多的逃避:
sed -r '/^\/incoming\/?$/d' file
在OSX(BSD)上使用:
sed -E '\#^/incoming/?$#d' file