awk - 여러 줄을 grep하고 특정 방식으로 인쇄합니다.

awk - 여러 줄을 grep하고 특정 방식으로 인쇄합니다.

다음 내용과 다음과 같은 파일이 있습니다.file.txt

TIMESTAMP   200 J8899
INSTANCES   19  x86_64  False   i-xxx1a1a   t2.medium   True    subnet-93b224fb hvm vpc-7b801
STATE   16  running
TIMESTAMP   300 J2099
INSTANCES   18  x86_64  False   i-xxx1a1b   t2.medium   True    subnet-93b224fb hvm vpc-7b801
STATE   16  running

이제 다음 출력을 인쇄하고 싶습니다.

i-xxx1a1a : running
i-xxx1a1b : running

TIMESTAMP, INSTANCES, STATE다음으로 시작하는 줄에 유의하세요.

나는 이것을 시도했지만 성공하지 못했습니다.

grep -Ew "인스턴스|상태" file.txt awk '{Print $0}'

답변1

awk를 사용할 수 있습니다.

awk '/INSTANCES/{ thing = $5; } /STATE/ { print thing,":",$NF; }' file.txt

이는 해당 STATE가 항상 INSTANCE 뒤에 나타난다고 가정합니다. 또한 인스턴스에 상태가 누락된 경우 전체 인스턴스를 건너뜁니다.

관련 정보