대소문자를 무시하고 grep에서 문구의 발생 횟수를 계산하는 방법은 무엇입니까?

대소문자를 무시하고 grep에서 문구의 발생 횟수를 계산하는 방법은 무엇입니까?

nicolas bomber로 이름을 검색해야 합니다 grep. 이름도 괜찮습니다 NiCoLaS BomBer. .sh해당 이름의 발생 횟수를 보여주는 파일을 실행해야 합니다 .

내가 내린 명령은 다음과 같습니다.

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

하지만 작동하지 않습니다.

어떤 제안이 있으십니까?

답변1

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" .

관련 정보