2013-10-07 2 views
0

grep 명령을 실행하고 그 결과를 출력하는 스크립트를 실행하고 싶습니다. grep이 한 줄을 반환 할 것으로 기대하지만 일치하는 줄이없는 경우를 처리하려고합니다 (예 : grepped 파일이없는 경우).grep이 적어도 하나의 줄을 반환하는 방법

line = grep ... 
if line is empty 
    print "\n" 
else 
    print line 

답변

3

grep의 리턴 코드를 조사하기 만하면됩니다.

grep은 행이 일치하면 0을, 일치하는 행이없는 경우 1을 반환합니다. 오류가 발생하면 1보다 큰 값을 반환합니다. 특정 상황에서

$ echo "hi" | grep hi 
hi 
$ echo $? 
0 
$ echo "hi" | grep hello 
$ echo $? 
1 
1

(예 : 당신이 bash는 스크립트에서 set -e을 때와 같이), 당신은 grep에게 제공되는 표현이 일치하지 않을 때의 경우 상태 1로 종료 grep 싶지 않아요.

grep "EXPR" FILE.txt || echo "No match found" 

가능한 결과 :

    따라서 grep가 호출되고있는 단말 또는 스크립트 사용 다시 제공되는 1 (또는 그 이상)의 이탈 상태를 방지

  1. FIRE.txt에서 "EXPR"이 일치 함 - 출력 : 일치 목록
  2. "EXPR"이 FILE.txt에서 일치하지 않음 - 출력 : grep으로 또는 파일에
  3. 부적절한 인수를 찾을 수 없습니다 "일치"발견하지 (종료 상태 2 이상) - 출력 (STDOUT) :는 "일치하는 항목이 없습니다"
(STDERR 메시지와 함께)
관련 문제