echo "21 2 " | awk '{
first[NR]=$
second[NR]=$
}END{
print "======打印第1列并排序:===========" > "testAwkPipe.txt"
close("testAwkPipe.txt")
for(i in first)
print first[i] |"sort -n >> testAwkPipe.txt"
close("sort -n >> testAwkPipe.txt") print "======打印第2列并排序:===========" >> "testAwkPipe.txt"
close("testAwkPipe.txt")
for(i in second)
print second[i] |"sort -n >> testAwkPipe.txt"
}
close("sort -n >> testAwkPipe.txt")
'
输出结果为:
======打印第1列并排序:===========
3
17
21
======打印第2列并排序:===========
2
23
52
去掉任何一个“close()”函数都无法得到上面的正确输出结果。原因就是awk中的管道使用时,如果不关闭,将会一致被使用。下面是错误的运行例子:
echo "21 2 " | awk '{
first[NR]=$
second[NR]=$
}END{
print "======打印第1列并排序:===========" > "testAwkPipe.txt"
close("testAwkPipe.txt")
for(i in first)
print first[i] |"sort -n >> testAwkPipe.txt" print "======打印第2列并排序:===========" >> "testAwkPipe.txt"
close("testAwkPipe.txt")
for(i in second)
print second[i] |"sort -n >> testAwkPipe.txt"
}
运行结果:
======打印第1列并排序:===========
======打印第2列并排序:===========
2
3
17
21
23
52
将所有的数据进行了排序,显然是等所有的数据都输出完毕后,再进行的sort排序。