计算在大文件上使用awk的出现次数

时间:2013-04-15 10:18:04

标签: linux shell

我有2个文件。首先,文件2中也存在少量记录。 File2大于file1。我想在file2显示单词的出现次数(来自file1)。

这是我试过的

file1.txt
bash-3.00# cat file1.txt |wc -l
17102666

more file1.txt
123advertise3
123advertise4
123advertise5
123advertiseb
123advertisec
123advertised
123advertisedebtconsolidation
123advertisee
123advertisef
123advertiseg
123advertiseh
123advertisehomaxproducts

文件2

file2.txt
bash-3.00#cat file2.txt | wc -l
113842500


more file2.txt
123123apartment
123123attorney
123123auction
123123auto
123advertisedebtconsolidation
123advertiseb
123123automate
123123automatic
123123bank
123advertisedebtconsolidation
123advertiseb
123123banking
123123bankruptcy
123advertisedebtconsolidation
123123bargain
123123best
123123blog
123advertisedebtconsolidation
123123building

我想要这样的输出

123advertisedebtconsolidation 3
123advertiseb 2

我跑到命令

下面
bash-3.00# nawk 'FNR==NR{c[$1];next}$1 in c{++c[$1]}END{for(i in c) print i,c[i]}' file1.txt file2.txt

但我没有得到理想的输出。

我只有字符串

peaktablethomecsuchico
browsepropertyhomebase
clickflowershomedsn
worldwideflowerstravelagency
acepigb
acepigc
browsecompanytravelagent
liveearnhomedownpaymentassistance
acepigd
bargainsystemhomebvcure
acepige
acepigf
uniquecasinohomecycling
alternativeanyhomecanningrecipes
acepigj
annualsurveyhomedma

任何人都可以帮我在特殊的大文件中使用grep或awk获取此类输出。我在较小的文件上尝试过相同的操作,但它运行正常。

1 个答案:

答案 0 :(得分:0)

uniq命令可能是输出公共字符串的简单方法。 -c选项指定输入中的匹配数。 awk命令只输出具有多个出现的行。

cat file1.txt file2.txt | sort | uniq -c | awk '{ if ($1 > 1) print $0; }'