用bash中的空行分隔

时间:2011-10-25 16:08:56

标签: shell lines

我有这样的输入:

Block 1:
line1
line2
line3
line4

Block 2:
line1
line2

Block 3:
line1
line2
line3

这是一个例子,是否有一种优雅的方式来打印Block 2及其行而不依赖于他们的名字?它就像"用空白行分隔块并打印第二个块"。

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 }'

(请注意,这仅在不包含任何空格的行上分开。 仅包含空格的行不被视为空行。)