我有一个带有数字的文件,从1到25。
如何查找此文件中每个号码出现的次数?
我正在使用shell脚本来执行此操作,因此grep对我来说很有意义:
grep char -o filename | wc -l
但是,我有一个问题。按顺序:
1,2,3,4,5,6
11,22,33,44,55,66
11,11,11,1,1,1,1
这个命令会找到11次4次,太棒了!这是一个准确的答案。
但是,会发现1号13次!而数字1只发生了5次。
所以,我试图找到的答案是:如何告诉grep 1是11的不同,2是22的不同,依此类推?
答案 0 :(得分:1)
您需要在-w
命令中添加grep
。
$ grep -wo 1 file | wc -l
5
通过这种方式,它只会匹配完整的字词,例如13
在查找1
时将无法匹配。
来自man grep
:
-w, - word-regexp
仅选择包含构成整个单词的匹配项的行。该 test是匹配的子字符串必须位于开头 该行,或前面是非单词构成字符。同样的, 它必须位于该行的末尾或后跟非单词 组成性质。单词构成字符是字母, 数字和下划线。
答案 1 :(得分:0)
在搜索模式周围使用单词边界:
grep -o '\<1\>' file | wc -l
5
答案 2 :(得分:0)
cat filename |sed 's/,/\n/g' |sort -n |uniq -c
sed
语句替换了所有逗号,所以现在每行有一个数字流。结果是sort
数字编辑,然后使用uniq
实用程序
欢迎你。
~# cat filename |sed 's/,/\n/g' |sort -n |uniq -c
5 1
1 2
1 3
1 4
1 5
1 6
4 11
1 22
1 33
1 44
1 55
1 66