AWS cli를 사용하여 AWS 계정에서 일부 데이터를 가져오고 있습니다. 정확한 문자열을 추출할 수 없습니다. 다음 명령을 실행할 때:-
aws ec2 describe-instances --output text --query 'Reservations[*].Instances[*].[ [Tags[?Key==`Name`].Value] [0][0], [Tags[?Key==`Operating System`].Value] [0][0], [Tags[?Key==`Environment`].Value] [0][0], InstanceId, InstanceType,VpcId, State.Name, PrivateIpAddress, PublicIpAddress]
'| column -t | grep production
내가 얻는 결과는 다음과 같습니다.
sftp_gateway_instance rhel production i-0aec9xxxxxxxxxxxd t2.xlarge vpc-zzzzzz1b running 2.3.4.5 3.2.1.2
abc-production-nav-1 rhel production i-0e4xxxxxxxxxxxxx3 t2.xlarge vpc-zzzzzz1b running 1.1.6.5 None
xyz-produ-nav rhel production i-0xxxxxxxxxxxxxx18 t2.xlarge vpc-zzzzzz1b running 2.8.0.4 None
solutions-production-navi centos uat i-08fffffffffff86c8 t2.large vpc-zzzzzz1b running 2.8.9.2 None
위에 제공된 출력에서는 프로덕션이 환경 열이 아닌 인스턴스 이름에 언급되어 있으므로 마지막 행이 필요하지 않습니다.
아래 awk 명령을 시도했지만 이 경우 출력이 올바른 열 형식으로 나오지 않습니다.
aws ec2 describe-instances --output text --query 'Reservations[*].Instances[*].[ [Tags[?Key==`Name`].Value] [0][0], [Tags[?Key==`Operating System`].Value] [0][0], [Tags[?Key==`Environment`].Value] [0][0], InstanceId, InstanceType,VpcId, State.Name, PrivateIpAddress, PublicIpAddress]
'| awk -F ' ' '$3 == "production" {print $1 "\t\t" $2 "\t" $3"\t" $4"\t" $5"\t" $6"\t" $7"\t" $8"\t" $9 }'
이 경우의 출력은 다음과 같습니다.
abc-production centos production i-xyzabcdef t2.xlarge vpc-xyzabc running 2.18.1.0 None
doc-pdf-prod windows production i-xyzabcdef t2.large vpc-xyzabc running 172.18.70.229 None
위의 출력과 같이 올바른 열 형식의 출력을 원합니다. grep을 사용하여 얻은 결과입니다. 누구든지 이것에 대해 무엇을 해야할지 제안할 수 있습니까?
답변1
grep production
"Production"이 포함된 행을 일치시키는 대신 awk '$3 == "production"'
세 번째 필드가 "Production"인 행만 일치하는 를 사용하세요.
:에서는 추가 작업이 필요하지 않습니다 awk
. 기본적으로 일치하는 줄 전체가 인쇄됩니다.