【问题标题】:Code about occurences of a word in a file in BASH [duplicate]关于 BASH 文件中单词出现次数的代码 [重复]
【发布时间】:2019-05-29 09:23:59
【问题描述】:

我想用只有 一个 行代码来计算一个单词在文件中的出现次数。示例:对于输入:“hi, welcome to the himalaya. hihi” “hi” 输出将是 4(因为单词“hi”出现了 4 次)

我尝试使用 tr 和 grep,但它不会计算两次“hihi”,而只会计算一次。

tr 'WORD' '\n' < $1 | grep $2 | wc -l

对于上面给出的示例,输出是 3 而不是 4。 谢谢!

【问题讨论】:

  • grep -o "$2" "$1" | wc -l? (如果$1 是一个文件名...)
  • How can I count the occurrences of a string within a file? 的可能重复项。确切的答案是here
  • perl -nE 'BEGIN { $/ = shift } END { say $. - ($. &amp;&amp; 1) }' "$2" "$1"?
  • @GunTop 如果hihi 是 2 his 那么你不算单词,你算的是字符串。单词是由非单词构成字符(标点符号、空格等)分隔的单词组成字符(通常是字母数字加下划线)的字符串。在计算单词时,hi 只在输入 "hi, welcome to the himalaya. hihi" 中出现一次。
  • 谢谢大家,伙计们!你真棒。我会试试这些代码!

标签: bash awk grep


【解决方案1】:

因为你用awk标记了这个问题:

awk '{s+=gsub(/WORD/,1)}END{print s}' file

因此,单一流程解决方案,也可以进行扩展。

【讨论】:

  • 谢谢。 “gsub”、“END”和“s”是什么意思?
  • @GunTop 阅读了一些 awk 教程。
【解决方案2】:

试试这个:

grep -o "hi" input.txt | wc -l

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 2013-01-21
    • 1970-01-01
    • 2019-02-21
    • 2017-02-15
    相关资源
    最近更新 更多