以下是我的一部分剧本:
END{
for (key in data) {
print key" "data[key]|"sort -k 2n";
}
print "something or other"
}
问题是,控制台输出首先显示第二个打印输出,然后显示在for循环中通过排序传输的打印输出的结果。
尝试粗暴的支撑无济于事。 我不知道如何甚至谷歌关于这个问题,如何排序收集应该排序的?我怎样才能更好地指导呢?
编辑:只是有一个实现的时刻,问题不是它捕获最后一个打印,但它实际上是在最后一次打印后执行,尽管被提前调用。
答案 0 :(得分:0)
答案是Ed Morton建议的close()函数。
有关close()的详细信息,我发现https://www.gnu.org/software/gawk/manual/html_node/Close-Files-And-Pipes.html很有用。
正确的代码段因此成为:
END{
for (key in data) {
print key" "data[key]|"sort -k 2n";
}
close("sort -k 2n");
print "something or other";
}
这样,它正确地打印出for循环中的排序输出,并且只有在打印出循环后调用的最后一个打印输出时才会打印出来。