【发布时间】:2014-08-06 09:29:07
【问题描述】:
我有一个文本文件 test.in 如下:
english<tab>walawala
foo bar<tab>laa war
foo bar<tab>laa war
hello world<tab>walo lorl
hello world<tab>walo lorl
foo bar<tab>laa war
期望的输出应该是:
english<tab>walawala<tab>0.1666
foo bar<tab>laa war<tab>0.5
hello world<tab>walo lorl<tab>0.3333
新列是行数除以总行数。
目前我正在这样做:
cat test.in | uniq -c | awk '{print $2"\t"$3"\t"$1}' > test.out
但这只能给我行数而不是概率。此外,我的文件非常庞大,例如 1,000,000,000 行,每列至少 20 个字符。
我怎样才能正确快速地获得所需的输出?
有没有同样快的 Pythonic 解决方案?
【问题讨论】:
-
你试过
wc吗?q=`cat test.in | wc -l`;cat test.in | uniq -c | awk '{print $2"\t"$3"\t"$1'/$q'}' -
@user189 useless use of cat 警报。 :)
-
注意浮点是四舍五入的...
标签: python unix count text-files uniq