词频表 - 不同的结果

时间:2015-03-01 10:03:29

标签: linux bash shell awk

我试图使用shell命令在linux中获取单词的频率表:

我想知道多少次"?xml"发生在文件中。

所以option1是grep, sort, unique并且:

 cat allWords.txt | grep  "<?xml"  | sort | uniq -c  
      1 Data=<?xml
     12 'http://www.cs.caltech.edu/~adam/schemas/bCard'><bCard><?xml
      1 <?xml?>
   1099 <?xml
      4 '<?xml'
      3 '<?xml

正确

选项2是使用更快awkAwk: Words frequency from one text file, how to ouput into myFile.txt?

awk '{a[$1]++}END{for(k in a)print a[k],k}' allWords.txt  | grep "<?xml"
554 <?xml
6 'http://www.cs.caltech.edu/~adam/schemas/bCard'><bCard><?xml
3 '<?xml'

某些单词不正确,但对其他单词正确。如果我能让它正常工作,awk可能只是找到我。

那为什么会有区别?

修改

我从dows变为unix:

sed -i 's/\r//' allWords.txt

现在:

awk '{a[$1]++}END{for(k in a)print a[k],k}' allWords.txt  | grep "<?xml"
611 <?xml
5 'http://www.cs.caltech.edu/~adam/schemas/bCard'><bCard><?xml
3 '<?xml'
1 Data=<?xml

此外,该文件似乎包含unicode字符串。

0 个答案:

没有答案