awk -F'/' '{ print $1 |" sort " }' infile > outfile
与
awk -F'/' '{ print $1 }' infile | sort > outfile
如果我在awk
内使用管道(或重定向),这些MVCE是否完全相同或是否存在我不知道的可移植性/性能问题。
两个命令都会产生正确的输出。
更新:自己做了一些研究 - 请参阅下面的答案。
答案 0 :(得分:1)
如果在|
内使用awk
,则print语句的输出会累积到一个字符串中,然后是" xxx"中的shell命令。用该字符串执行。
考虑:
$ echo 1 4 2 3 | awk '{for (i=1; i<=NF; i++) print $i}'
1
4
2
3
现在尝试:
$ echo 1 4 2 3 | awk '{for (i=1; i<=NF; i++) print $i | "sort" }'
1
2
3
4
单个字符串1\n4\n2\n3
正在内部构建,然后由awk传递给sort
这可以组合成更复杂的调用,例如:
awk '{ print $1 > "names.unsorted"
command = "sort -r > names.sorted"
print $1 | command }' names
更多关于redirection.
上的GNU awk手册