使用grep查找文件中的数字

时间:2013-12-03 14:02:35

标签: bash shell unix grep

我有一个带有数字的文件,从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的不同,依此类推?

3 个答案:

答案 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