使用awk在条件下连接两行
当fiel的数目与给定的数目不匹配时,我尝试连接两行 以下是输入文件的示例:使用awk在条件下连接两行,awk,concatenation,end-of-line,Awk,Concatenation,End Of Line,当fiel的数目与给定的数目不匹配时,我尝试连接两行 以下是输入文件的示例: 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 我不明白为什么我先得到下一行,然后只得到第一行的第二个字段
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
我不明白为什么我先得到下一行,然后只得到第一行的第二个字段。尝试这样做:
awk 'NF!=1{printf "%s ", $0;next}1' file
输出:
1, z 2
3
4
5, w 6
7
这可以做到:
awk '{printf "%s%s",$0,(NF>1?FS:RS)}' file
1, z 2
3
4
5, w 6
7
如果有一个字段和一个空白字段(字段分隔符),它将打印换行符
$ 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
getline
。谷歌为什么不使用getline
你就会明白为什么了。谢谢。很高兴了解getline。我现在会小心的。我仍然认为我的问题是由于awk版本,正如我在回复nu11p01n73R时提到的。我添加了隐藏在某处的^M
字符。我应该知道!!!