我需要在模式被击中后打印多行,直到到达空白行。
aaa
bbb
ccc
ddd
aaa
fff
ggg
hhh
iii
jjj
一行中包含组数据的所需输出:
aaa bbb ccc ddd
aaa fff ggg hhh iii jjj
使用sed
:
$ sed -r ':a;N;$!ba;s/(.)\n/\1 /g' inputfile
aaa bbb ccc ddd
aaa fff ggg hhh iii jjj
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,这可能只适用于 gawk,或支持 RS 中的多个字符的 awk
一种方法awk
:
$ awk '{$1=$1}1' RS= FS='\n' OFS=' ' file
aa bbb ccc ddd
aaa fff ggg hhh iii jjj
这可能对您有用(GNU sed):
sed ':a;$!N;s/\n$//;t;s/\n/ /;ta' file