【发布时间】:2016-01-22 05:13:26
【问题描述】:
假设我有这个制表符分隔的文件
id1 term1 term2
id2 term1 term2
id3 tern2 term3
我想要做的是在它们引用的 ID 旁边计算相同 column2 column3 出现的次数。
所以新的制表符分隔文件将如下所示:
term1 term2 2 id1,id2
term2 term3 1 id3
我已经尝试过这种单线,这是我最接近所需解决方案的方法
awk '{count[$2,$3]++;} END {for (word in count) printf("%s\t%s\n", word,count[word])}'
但我得到的是:
term1 term2 2
term2 term3 1
在术语之间是一个矩形。
任何关于 Perl 或 awk 或其他任何东西的想法都会很可爱。
起初我认为 Perl 会更好,但我的一个朋友建议使用 awk。这是我第一次使用 awk。
【问题讨论】:
-
“起初我认为 Perl 会更好,但我的一个朋友建议使用 awk。这是我第一次使用 awk。” Perl 会做 awk 可以做的所有事情,包括用 Perl 编写简洁的单行代码更难的例外。你应该坚持你所知道的。任何推荐 awk 而不是 Perl 的人都是粉丝