Shell

如何計算grep中片語的出現次數,忽略大小寫?

  • July 15, 2016

nicolas bomber我需要使用搜尋名稱grep。名字也可以NiCoLaS BomBer。我需要執行一個.sh顯示該名稱出現次數的文件。

我發出的命令是這樣的:

grep -i "Nicolas \s*Bomber" annuaire | wc -l

但它不起作用。

有什麼建議麼?

grep-o將只輸出匹配項,忽略行;wc可以數一數:

grep -io "nicolas bomber" annuaire | wc -l

或者簡單地說,

grep -ioc "nicolas bomber" annuaire

-z正如您評論的那樣,您可以使用選項匹配單詞之間出現的任意數量的空格,

grep -iz "nicolas[[:space:]]*bomber" annuaire | wc -l

man grep

-i, --ignore-case
   Ignore case distinctions in both the PATTERN and the input files.  (-i is specified by POSIX.)    

-o, --only-matching
   Print only the matched (non-empty) parts of a matching line, with each such part on a separate output line.

-c, --count
   Suppress  normal  output;  instead  print  a  count  of  matching  lines  for each input file.

或者,如果您想搜尋特定文件副檔名中的字元串,例如說所有*.txt文件,您可以使用:

grep -R --include='*.txt' -ioc "nicolas bomber" .

引用自:https://unix.stackexchange.com/questions/296080