我有一个看起来像这样的文件:
AA
2
3
4
CCC
111
222
333
XXX
12
23
34
我正在寻找awk命令,从上方搜索字符串“ CCC”,并打印出出现在“ CCC”之后但在我到达“ XXX”后立即停止阅读的所有行。
一个非常简单的命令为我完成了读取,但并没有停止在XXX。
awk '$0 == "CCC" {i=1;next};i && i++' c.out
答案 0 :(得分:1)
请您尝试以下。
解决方案第一: 使用sed
。
sed -n '/CCC/,/XXX/p' Input_file
解决方案2: 使用awk
。
awk '/CCC/{flag=1} flag; /XXX/{flag=""}' Input_file
解决方案3rd: :如果要从字符串CCC
打印到XXX
,但又不想从这些字符串打印,请执行以下操作。
awk '/CCC/{flag=1;next} /XXX/{flag=""} flag' Input_file
答案 1 :(得分:1)
“在此与该之间做点事情”可以轻松地通过range pattern解决:
awk '/CCC/,/XXX/' # prints everything between CCC and XXX (inclusive)
但这并不是您所要求的。您想在CCC
上打印所有 XXX
和 quit (停止阅读)的内容。转换为
awk '/XXX/{exit};f;/CCC/{f=1}'