使用 sed 打印指定范围内的选定行

使用 sed 打印指定范围内的选定行

考虑简化的文件

AAA
BBB
CCC1
DDD
EEE
CCC2
DDD
FFF
GGG
CCC3
HHH

我可以选择EEE范围FFF

sed -n '/EEE/,/FFF/p'

假设我想打印包含C但仅在匹配范围内的任何行。我可以sed通过管道传输结果grep

sed -n '/EEE/,/FFF/p' | grep 'C'

awk我还可以在一个小脚本中进行范围和匹配(或perlpython等)。但我该如何仅使用一次调用来完成此操作呢sed

答案1

使用一个块,告诉 sed 仅在看到 C 时才打印:

sed -n '/EEE/,/FFF/{/C/p}'

答案2

你可以试试 :

sed '/EEE/,/FFF/!d;/C/!d'

相关内容