我有这样的输入:
Block 1:
line1
line2
line3
line4
Block 2:
line1
line2
Block 3:
line1
line2
line3
这是一个例子,是否有一种优雅的方式来打印Block 2及其行而不依赖于他们的名字?它就像"用空白行分隔块并打印第二个块"。
答案 0 :(得分:1)
试试这个:
awk '!$0{i++;next;}i==1' yourFile
考虑性能,也可以在第二个块处理后添加退出:
awk '!$0{i++;next;}i==1;i>1{exit;}' yourFile
<强>测试强>:
kent$ cat t
Block 1:
line1
line2
line3
line4
Block 2:
line1
line2
Block 3:
line1
line2
line3
kent$ awk '!$0{i++;next;}i==1' t
Block 2:
line1
line2
kent$ awk '!$0{i++;next;}i==1;i>1{exit;}' t
Block 2:
line1
line2
答案 1 :(得分:1)
将记录分隔符设置为空字符串以在空行上分隔。至 打印第二个块:
$ awk -v RS= 'NR==2{ print }'
(请注意,这仅在不包含任何空格的行上分开。 仅包含空格的行不被视为空行。)