sed regex:字符串结尾或正斜杠

时间:2015-10-20 17:26:50

标签: regex bash sed

我有一个映射文件(mapping.txt),内容如下:

/incoming
/incoming/
/incoming-foo
/incoming-foo/

使用sed和regex并希望使用以下内容匹配(然后删除)前两行:

sed -i "/\\^/incoming\/?$/d" /mapping.txt

然而,它无效。

基本上,我希望严格按照/incoming/incoming/进行匹配,而不是其他任何内容。

你们提供的任何帮助都会很棒。

2 个答案:

答案 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