unix 如何让“sort”在“awk script”完全执行之前执行并打印,以便我可以在排序后的数据之后添加一些内容?

3htmauhk  于 2022-11-23  发布在  Unix
关注(0)|答案(1)|浏览(137)

所以,我基本上是想把排序后的数组/数据存储到另一个数组中,然后用那个数据打印其他东西?
即使我想要页脚,排序后的数据也打印在页脚之后。

printf ("    %-25s %-20s %d\n", employee_name[working_employee_id[y]], title[employee_name[working_employee_id[y]]], salary[employee_name[working_employee_id[y]]]) | "sort -nr -k2"

我想在执行完这一行之后打印其他内容,而不是让sort在最后打印

w3nuxt5m

w3nuxt5m1#

如果您想确保您要用管道传输的命令在页脚文本之前完成所有输出的显示,那么在打印任何其他内容之前,您需要在输入结束时对管道进行close()
示例:

$ paste <(seq 10 | shuf) <(seq 10 | shuf) |
  awk '{ printf "%d\t%d\t%d\n", $1, $2, $1 + $2 | "sort -k1,1n" }
       END { close("sort -k1,1n"); print "a\tb\tc" }'
1   8   9
2   3   5
3   6   9
4   4   8
5   2   7
6   10  16
7   9   16
8   1   9
9   7   16
10  5   15
a   b   c

相关问题