【发布时间】:2011-12-08 03:13:00
【问题描述】:
我需要统计大量文件的第二列元素的出现次数。我正在使用的脚本是这样的:
{
el[$2]++
}
END {
for (i in el) {
print i, el[i] >> "rank.txt"
}
}
为了在大量文件上运行它,我以这种方式使用find | xargs:
find . -name "*.txt" | xargs awk -f script.awk
问题是,如果我计算输出文件rank.txt(带有wc -l rank.txt)的行数,我得到的数字(例如7600)大于第二行的唯一元素数(例如 7300),我通过 :
find . -name "*.txt" | xargs awk '{print $2}' | sort | uniq | wc -l
实际上给出一个:
awk '{print $1}' rank.txt | sort | uniq | wc -l
我获得了正确数量的元素(按照示例,我将获得 7300)。所以这意味着输出文件第一列的元素不是唯一的。但是,这不应该发生!
【问题讨论】:
标签: bash unix awk unique xargs