수백 줄의 출력을 반환하는 명령이 있는데 ps -ef
거의 동일한 패턴(끝에 있는 숫자 제외)을 grep하고 각 패턴의 단일 인스턴스를 반환해야 합니다. 예:
이 특정 ps -ef
명령은 수십 개의 줄을 출력하며, 각 줄에는 무작위로 할당된 문자열 svc-0
이나 svc-5
0에서 5 사이의 숫자가 포함되어 있습니다 svc
. 이렇게 하면 grep -Eo 'svc-[0-5]'
패턴 일치를 수행하고 모든 행의 모든 인스턴스를 반환합니다. svc-0
and 의 존재 만 확인하면 됩니다 svc-5
. 내가 원하는 출력은 다음과 같습니다.
svc-0
svc-5
다음과 같이 행이 연속해서 여러 번 반복되는 경우가 많기 -m2
때문에 grep에 추가 할 수 없습니다 .svc
svc-5
svc-5
svc-5
svc-5
svc-5
svc-0
svc-0
svc-0
svc-0
svc-0
답변1
awk 필터를 사용하여 원하는 두 패턴을 찾을 수 있습니다. 둘 다 발견되면 성공적으로 종료하고, 그렇지 않으면 "실패"로 종료합니다.
ps -ef ... | awk '/svc-0/ { zero++; } /svc-5/ { five++; } END { if (zero && five) exit 0; exit 1; }'