示例代码是这样的,它对第一列出现的次数进行统计并对结果进行排序。
{ dist[$1]+=1; }
END { for (i in dist) {
print i,dist[i] | "sort"
}
}
在我看来,这个过程是这样的:
(工作流程 A)
1) 打印 中的所有元素dist
,将它们全部保存到缓冲区
2)获取缓冲区中的所有元素,并将它们通过管道传递给sort
函数
但在上面的示例中,过程如下所示:
(工作流程 B)
1) 在 中打印一个元素dist
,然后通过管道将其传递给sort
函数
2) 处理 中的下一个元素dist
,直到没有新元素dist
我想知道为什么我不应该这样放置sort
:
{ dist[$1]+=1; }
END { for (i in dist) {
print i,dist[i]
}
| "sort"
}
有人知道原因吗?pipe
如果我想做这样的工作,我该怎么写WORKFLOW B
?
谢谢!