2014-11-17 2 views
2

내 스크립트 셸에서 파일이 2 개 있습니다. 첫 번째 경로의 일부 파일의 이름을 포함하는 파일이다linux 스크립트 셸 : grep 경로 목록의 경로 부분

목록 1 : 두번째 절대 경로와 확장자 「.ext를 "모든 파일의 목록이

aaa/bbb/file1.ext 
ccc/ddd/file2.ext 
eee/fff/file3.ext 

그 전에 :

리스트 2 :

/home/.../aaa/bbb/file1.ext 
... 
... 
... 
/home/...ccc/ddd/file2.ext 
... 

그리고 grep와 함께 첫 번째의 라인을 포함, 두 번째 파일리스트 2의 라인을 추출하기 위해 노력하고 있습니다.

는 지금 내가 시도 :

while read line 
do 
    grep "$line" "list1" 
done < list2 

그러나이 명령은 무엇이든,

grep "aaa/bbb/file1.ext" "list1" 

내가

/home/.../aaa/bbb/file1.ext 

사람을 기다리고 출력을 가지고 있지만 명령을 ouptut하지 않습니다 이 스크립트에서 제가 누락 된 부분을 봅니다. 감사합니다

답변

3

grep에서 -f 옵션이 매우 편리 오는 곳이 사례 중 하나입니다 : 당신의 주어진 입력의

grep -f f1 f2 

는 반환

/home/.../aaa/bbb/file1.ext 
/home/...ccc/ddd/file2.ext 

man grep에서 :

-f FILE, --file = FI LE

FILE에서 한 줄에 하나씩 패턴을 가져옵니다. 빈 파일에 패턴이 포함되어 있으므로 일치하지 않습니다. (-f는 POSIX로 지정됩니다.)

+0

좋은 해결책 인 것처럼 보이지만 제 경우에는 작동하지 않습니다. 다시 출력이 없습니다. – johan

+0

보다 구체적인 입력을 제공 할 수 있습니까? – fedorqui

+1

사실 내 exemple 파일로 만든 테스트가 완벽하게 작동하므로이 명령을 수행하기 위해 파일을 만든 방식을 확인해야한다고 생각합니다. 답변을 주셔서 감사합니다 – johan