为什么删除`END {print“”}`不打印最后一行?

时间:2016-01-08 23:49:38

标签: awk

我正在阅读https://stackoverflow.com/a/34685332/156458

中的一个例子
$ seq 5 | awk '{printf "%s%s",sep,$0; sep=",\n"} END{print ""}'
1,
2,
3,
4,
5

我认为END{print ""}是多余的,所以

$ seq 5 | awk '{printf "%s%s",sep,$0; sep=",\n"} '
1,
2,
3,
4,

为什么删除END{print ""}不打印最后一行?

2 个答案:

答案 0 :(得分:2)

因为您正在删除有效打印新行的{print ""}

5应该出现在你的提示之前,但你的shell可能不允许这样做,只是将它们全部放在一起。

$ seq 5 | awk '{printf "%s%s",sep,$0; sep=",\n"} END{print ""}'打印:

1,
2,
3,
4,
5
$>

$ seq 5 | awk '{printf "%s%s",sep,$0; sep=",\n"}打印:

1,
2,
3,
4,
5$>

答案 1 :(得分:2)

如何简化:

seq 5 | awk -v RS="\0" -v OFS=",\n" '{$1=$1}7'