【发布时间】:2013-09-30 07:28:06
【问题描述】:
我需要在模式命中后打印多行直到到达空白行。
aaa
bbb
ccc
ddd
aaa
fff
ggg
hhh
iii
jjj
在一行中包含组数据的所需输出:
aaa bbb ccc ddd
aaa fff ggg hhh iii jjj
【问题讨论】:
-
为什么有人在不说明原因的情况下否决了一个问题,嗯。所以我投了赞成票。
我需要在模式命中后打印多行直到到达空白行。
aaa
bbb
ccc
ddd
aaa
fff
ggg
hhh
iii
jjj
在一行中包含组数据的所需输出:
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
【讨论】:
OFS的好处是您可以轻松更改数据的格式,例如CSV只需设置OFS=,。
使用sed:
$ sed -r ':a;N;$!ba;s/(.)\n/\1 /g' inputfile
aaa bbb ccc ddd
aaa fff ggg hhh iii jjj
【讨论】:
这可能对你有用(GNU sed):
sed ':a;$!N;s/\n$//;t;s/\n/ /;ta' file
【讨论】: