Combinando a string exata

2

Estou extraindo alguns dados da minha conta da AWS usando o AWS cli. Não consigo extrair a string exata. Quando estou dando o seguinte comando: -

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

Estou recebendo a saída como

 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

Na saída fornecida acima, não quero a última linha porque a produção é mencionada no nome da instância e não na coluna do ambiente.

Eu tentei o comando awk abaixo, mas, nesse caso, a saída não chegou no formato de coluna adequado

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 }' 

A saída neste caso é como abaixo: -

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

Eu quero a saída no formato de coluna adequado, como a saída acima, que estou usando o grep. Alguém poderia sugerir o que pode ser feito para isso?

    
por Prashast 07.05.2018 / 21:53

1 resposta

1

Em vez de grep production , que corresponde a qualquer linha com "produção", use awk '$3 == "production"' , que corresponde apenas às linhas nas quais o terceiro campo é "produção".

Não há necessidade de mais nada dentro do awk : por padrão, ele imprimirá toda a linha correspondente.

    
por 07.05.2018 / 21:59