정확한 문자열 일치

정확한 문자열 일치

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. 기본적으로 일치하는 줄 전체가 인쇄됩니다.

관련 정보