Разделить пустыми строками в bash - PullRequest
1 голос
/ 25 октября 2011

У меня есть такой ввод:

Block 1:
line1
line2
line3
line4

Block 2:
line1
line2

Block 3:
line1
line2
line3

Это пример, есть ли элегантный способ печатать Блок 2 и его строки только без указания их имен? Это было бы как «разделить блоки пустой строкой и напечатать второй блок».

Ответы [ 2 ]

1 голос
/ 25 октября 2011

Установите разделитель записей на пустую строку для разделения на пустые строки. к напечатать второй блок:

$ awk -v RS=  'NR==2{ print }'

(Обратите внимание, что это разделяет только строки, которые не содержат пробелов. Строка, содержащая только пробел, не считается пустой строкой.)

1 голос
/ 25 октября 2011

попробуйте это:

 awk '!$0{i++;next;}i==1' yourFile

, учитывая производительность, также можете добавить выход после обработки 2-го блока:

 awk '!$0{i++;next;}i==1;i>1{exit;}' yourFile

test :

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
...