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

roa*_*ima 4 sed pattern-matching

考虑简化文件

AAA
BBB
CCC1
DDD
EEE
CCC2
DDD
FFF
GGG
CCC3
HHH
Run Code Online (Sandbox Code Playgroud)

我可以挑选出的范围内EEE,以FFF

sed -n '/EEE/,/FFF/p'
Run Code Online (Sandbox Code Playgroud)

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

sed -n '/EEE/,/FFF/p' | grep 'C'
Run Code Online (Sandbox Code Playgroud)

我也可以做一个小范围和匹配awk脚本(或perlpython等等)。但是我将如何仅使用一次调用来做到这一点sed

cho*_*oba 13

使用一个告诉 sed 只在它看到 C 时打印的块:

sed -n '/EEE/,/FFF/{/C/p}'
Run Code Online (Sandbox Code Playgroud)