考虑简化的文件
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
我还可以在一个小脚本中进行范围和匹配(或perl
、python
等)。但我该如何仅使用一次调用来完成此操作呢sed
?
答案1
使用一个块,告诉 sed 仅在看到 C 时才打印:
sed -n '/EEE/,/FFF/{/C/p}'
答案2
你可以试试 :
sed '/EEE/,/FFF/!d;/C/!d'