在文本目录中计数的Bash代码字出现

时间:2014-12-08 23:41:00

标签: bash shell unix word

我正在试图找出如何计算每个单词出现的文件数量。例如,我有一个包含10个食谱文本的目录,我希望能够找到,例如,如何许多文本中“胡椒”这个词出现的结果就像'8胡椒'。

我知道如何计算字数等但是我觉得这有点过头了,我真的很感激一些帮助。

关于我所说的静脉的一个例子,这是我想出的字数统计命令

cat test.txt | tr '[A-Z]' '[a-z]' | tr -d '[:punct:]' | tr ' ' '\n' | sort | uniq 

3 个答案:

答案 0 :(得分:3)

find -type f  \
  | xargs tr  -c '[:alpha:]' '\n' \
  | tr '[:upper]' '[:lower:]' \
  | sort \
  | uniq -c \
  | grep pepper

这个

  1. 查找子目录中的所有文件;

  2. 连接它们,用换行符替换所有不是字母(这将产生 单行的行,以及很多空行);

  3. 转换为小写(使用POSIX类将保留非美国字符);

  4. 排序并折叠相同的行以生成类似的内容 单词出现图

    42 
    16 add
    9 the
    8 jalapeño
    8 pepper
    7 lot
    
  5. 以及仅显示第8 pepper行的过滤器。

  6. 您可能希望替换或改进 tr 命令,具体取决于您对文件的期望,或者限定 find 以仅匹配具有特定名称模板的文件等

答案 1 :(得分:1)

考虑以下

 find <directory path>  -name "*pepper*" -type f  |wc -l

将列出所有有辣椒的文件并计算它们

其他替代方案(如果您位于收件人所在的目录中)

ls -l|grep -E '*pepper*'|wc -l

答案 2 :(得分:1)

grep -l怎么样?例如,grep -l pepper *将列出包含&#34; pepper&#34;的所有文件。 grep -l pepper * | wc -l只会告诉你有多少这样的文件..