여러 조건을 사용하는 Grep 명령

여러 조건을 사용하는 Grep 명령

어떤 식으로든 결합이 가능한가요?

egrep 'version:|hostname:' File.log

그리고

egrep -A1 'error' File.log

하나가 되어 egrep동시에 처형되게 하시겠습니까?

미리 감사드립니다!

답변1

version:내가 올바르게 이해했다면 , hostname:또는 를 포함하는 모든 줄 error과 일치하는 줄 다음의 줄을 인쇄하고 싶을 것입니다 error.

grep으로는 이 작업을 수행할 수 없지만 AWK에서는 비교적 쉽게 수행할 수 있습니다. 여기서 이 p변수는 인쇄할 줄의 카운터 역할을 하며, 다른 변수는 패턴을 일치시킨 후에 인쇄합니다.

% cat foo.txt
hostname: foo
version: 1.2.3
blah
error:
   some error description
bleh
blih
% awk '/version:|hostname:/ {print; next} p {p--; print; next} /error/ {p=1; print} ' foo.txt
hostname: foo
version: 1.2.3
error:
   some error description

위와 달리 grep -A1위의 명령은 이미 "다음 줄"에 있는 일치 항목에서 다음 줄의 인쇄를 트리거하지 않습니다. 이를 위해 조건을 약간 재정렬해야 합니다.

% awk '/error/ {p=2} p {p--; print; next} /version:|hostname:/ {print}' foo.txt
hostname: foo
version: 1.2.3
error:
   some error description
bleh

관련 정보