当fiels的数量与给定的数字不匹配时,我试图连接两行。
以下是输入文件的示例:
1, z
2
3
4
5, w
6
7
这是我想要的结果:
1, z 2
3
4
5, w 6
7
我尝试了以下代码:
awk '
{
if (NF!=1){
first=$0
getline
print first" ",$0}
else {print $0}
}' $1
这是我获得的:
2 z
3
4
6 w
7
我不明白为什么我先获得下一行,然后只获得第一行的第二个字段。
答案 0 :(得分:0)
尝试这样做:
awk 'NF!=1{printf "%s ", $0;next}1' file
输出:
1, z 2
3
4
5, w 6
7
答案 1 :(得分:0)
这可能会:
awk '{printf "%s%s",$0,(NF>1?FS:RS)}' file
1, z 2
3
4
5, w 6
7
如果有一个字段,则打印换行符,然后打印一个空白字段(字段分隔符)
答案 2 :(得分:0)
更短的版本将是
$ awk 'ORS=NF == 1?"\n":FS' input
1, z 2
3
4
5, w 6
7
ORS
是输出字段分隔符
FS
字段分隔符,默认为空格
NF == 1?"\n":FS'
如果NF
,字段数等于1
,则ORS
设置为\n
,其他设置为FS
}