Grep/sed/awk 解决方案排除两个搜索关键字之间的行

Grep/sed/awk 解决方案排除两个搜索关键字之间的行

我看到有一些方法可以打印两个搜索模式之间的行,如此处所述如何 grep 开始和结束模式之间的行?

sed -n '/aaa/,/cdn/p' file
awk '/test1/,/test2/'

我需要对上述内容进行否定,并且发现很难使用标准 unix 命令 grep/sed/awk 获得正确的命令/解决方案。

grep -v排除与单词匹配的行,但不排除两个特定正则表达式之间的所有行。

有什么提示吗?

答案1

尝试

sed '/aaa/,/cdn/d' file

或者

awk '/test1/,/test2/{next} {print}'

或者(更紧凑)

awk '/test1/,/test2/{next} 1'

默认情况下打印每条记录(行),除非它匹配,/test1/,/test2/在这种情况下它会跳到下一个记录。

相关内容