Linux
匹配確切的字元串
我正在使用 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 獲得的上述輸出。誰能建議為此可以做些什麼?
代替
grep production
,它匹配其中包含“生產”的任何行,使用awk '$3 == "production"'
,它只匹配第三個欄位是“生產”的行。在 : 中不需要任何進一步的內容
awk
,預設情況下它將列印整個匹配行。