在图案之后打印N行,直到达到空白行

时间:2013-09-30 07:28:06

标签: unix sed awk

我需要在模式被击中后打印多行,直到到达空白行。

aaa
bbb
ccc
ddd

aaa
fff
ggg
hhh
iii
jjj

所需的输出,包含一行中的组数据:

aaa bbb ccc ddd 
aaa fff ggg hhh iii jjj

4 个答案:

答案 0 :(得分:1)

awk的一种方式:

$ awk '{$1=$1}1' RS= FS='\n' OFS=' ' file
aa bbb ccc ddd
aaa fff ggg hhh iii jjj

答案 1 :(得分:1)

使用sed

$ sed -r ':a;N;$!ba;s/(.)\n/\1 /g' inputfile
aaa bbb ccc ddd 
aaa fff ggg hhh iii jjj

答案 2 :(得分:1)

awk '$1=$1' RS="\n\n" file
aaa bbb ccc ddd
aaa fff ggg hhh iii jjj

或者更强大(如果0为第一位数字。

awk '{$1=$1}1' RS="\n\n" file

PS,这可能仅适用于支持RS中的多个字符的gawk或awk

答案 3 :(得分:0)

这可能适合你(GNU sed):

sed ':a;$!N;s/\n$//;t;s/\n/ /;ta' file