2016-08-23 5 views
0

디렉토리 아래의 각 파일에 대해 여러 텍스트가 여러 번 나타날 수 있습니다.디렉토리 아래의 각 파일에 대해 텍스트가 여러 번 나타나는 지 확인하십시오.

예를 들어
grep -rc 'blah' /some/path --include \*.txt 

주어진 두 개의 파일 :

foo.txt 
blah, hey blah 
some more text 

bar.txt 
something blah 

위의 스크립트를 생성합니다

foo.txt:1 
bar.txt:1 
다음 스크립트는 내가 원하는에 가까운하지만 같은 줄에 여러 번 계산하지 않습니다

하지만 찾고 있어요 출력은 *입니다 :

foo.txt:2 
bar.txt:1 
*
grep -oh 'blah' foo.txt|wc -l 

내 예에서와 같이 출력을 달성하기 위해 여러 파일에 대해이 작업을 수행하는 방법 : 16,

나는 사건의 총 수를 계산 GREP을 사용하여 다음 단어에 대한 결과를 파이프 하나 개의 파일에서 발견 될 수 있다는 사실을 알고 위?

업데이트

다음과 같이 I가 가지고 올 수있는 가장 좋은 해결책 : 인쇄 -o

find /some/path -name '*.txt'|awk '{print "echo -n '\''" 
    $0 "\: '\'' && grep -oh '\''blah'\'' " $0 "|wc -l"}'|bash 

답변

1

그렙 새 행에 각 경기는 - 다음

dir=$1 
grep -Hor --include '*.txt' 'blah' $dir| 
uniq -c| 
# output after uniq 
#  3 dir/f0.txt:blah 
#  2 dir/f1.txt:blah 
awk '{file=gensub(/^.+\/|:.+/, "", "g", $2); print file ":" $1}' 
엠 카운트