统计目录中所有文件中单词的出现次数

时间:2019-07-03 21:55:33

标签: shell unix awk grep

我在一个目录中有* .txt文件,我想在其中搜索每个* .txt文件中'>'的出现。我正在尝试以下命令:

grep '>' *.txt|wc -l

但是它给了我目录中所有事件的总数,而不是一次提供一个文件。

2 个答案:

答案 0 :(得分:2)

wc没用,请使用grep(man grep)的-c参数:

grep -c '>' *.txt

答案 1 :(得分:0)

使用awk。首先是一些测试数据:

$ cat f1
> a > b
> c
$ cat f2
d e 
f

awk脚本:

$ awk '
FNR==1 { f[FILENAME]=0 }  # define an array element for each file
(c=gsub(/>/,"&")) {       # count >s on record
    f[FILENAME]+=c
}
END {                     # in the end
    for(i in f)           # iterate all files
        print i,f[i]      # and output
}' f1 f2

输出:

f1 3
f2 0

使用grep会丢失文件而不会造成点击:

$ grep -Ho \> f1 f2 | cut -d : -f 1 | uniq -c
      3 f1