我试图使用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是使用更快awk
:Awk: 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字符串。