2014-02-14 2 views
0

그래서 특정 파일에 단어가 얼마나 많은 파일에 나타나는지 계산하는 프로그램을 작성하려고합니다. 하나의 파일로 한 단어를 몇 번이나 찾을 수 있습니까?bash에서 여러 파일에 대한 특정 단어 수 표시

a=`grep -c $1 Samplefile.txt` 
echo "you matched: $a times for word $1 " 

어떻게 여러 파일에 대해이 작업을 수행 할 수 있습니까? 내가 가장 먼저해야 할 일은 (Program1 단어 파일)의 샘플 입력을 사용했습니다. 이 다음 요구 사항은 입력 program2에 단어를 파일 1 파일 2을 할 수 있도록 저를 필요

답변

0

그냥 여러 파일에 대한 그렙 실행하기 위해의 shel의 글로브를 사용 : 여기

grep -c "$1" *.txt 

grep 모든 *.txt 파일을 실행하는 대신됩니다 단지 Samplefile.txt

출력은 다음과 같이 될 것입니다 :

abc.txt:3 
Samplefile.txt:5 
xyz.txt:0 

또는 당신이 SA 작업을 수행 할 수 있습니다

for f in *.txt; do 
    grep -Hc "$1" "$f" 
done 

편집 : 루프 내 안에 당신이 파일의 알려진 집합을 실행하려면 주석 사항에 따라는 사용

for f in "XXX" "YYY"; do 
    grep -Hc "$1" "$f" 
done 
난 단지 2를 실행하기를 원한다면 어떤 일이 일어날 것이라고
+0

파일과 나는 3 개의 파일을 가지고있다. 그래서 나는 XXX 파일 YYY 파일과 ZZZ 파일을 가지고 있지만 XXX 및 YYY 파일에 대해서만 실행하려고합니다. – user2569803

+0

그런 경우에는 grep을'grep -c "$ 1"XXX'와'grep -c "$ 1"YYY'로 두 번 실행할 수 있습니다. – anubhava

+0

for 루프 만 사용 하시겠습니까? 프로그램에서 어떻게 두 번만하는 것을 알 수 있습니까? 프로그램은 prog1 word file 또는 prog1 word file1 file2를 입력하는지 여부를 처리합니다. 사전에 모든 의견을 보내 주셔서 감사합니다. – user2569803

관련 문제