grep 결과 확인

grep 결과 확인

Available아래 코드를 사용하여 일치하는 항목이 있으면 인쇄하려고 합니다. nil

grep -o 'pattern' test.log | awk '{if($0=="pattern") print "Available"; else print "nil"}'

if부분은 잘 작동하지만 elsegrep이 비어 있으면 해당 부분을 얻을 수 없습니다.

답변1

패턴이 일치하지 않으면 grep출력이 생성되지 않으며 awk프로그램에서 사용할 데이터가 없습니다. 그렇기 때문에 코드 nil에서 결코 awk얻을 수 없습니다.

또 다른 방법은

if grep -q 'pattern' test.log; then
    echo 'Available'
else
    echo 'nil'
fi

옵션 은 유틸리티가 출력을 생성하는 것을 중지하는 -q데 사용됩니다 grep(진단 출력 제외). 여기서는 출력이 필요하지 않고 grep종료 상태만 필요합니다.


를 사용하면 awk원하는 경우 계속 테스트할 수 있지만 조건에 따라 블록에 문자열을 출력 해야 합니다 nil.END

grep -o 'pattern' test.log |
awk '/pattern/ { print "Available"; found = 1 }
     END { if (!found) print "nil" }'

END이 블록은 스크립트에 입력이 없더라도 awk실행됩니다 .

실제로 다음을 사용하여 모든 작업을 수행할 수 있습니다 awk.

awk '/pattern/ { print "Available"; found = 1; exit }
     END { if (!found) print "nil" }' test.log

호출은 블록 exit을 호출하므로 변수 END를 삭제할 수 없습니다 found.

관련 정보