obtendo a saída desejada com gawk / awk

3

Eu corro o seguinte comando:

aws ec2 describe-instances --filters "Name=ip-address,Values=MY_IP" | grep InstanceId 

e eu recebo:

"InstanceId": "i-b0f13081",

Como posso obter apenas o seguinte:

i-b0f13081

Isso é o que eu tentei:

 aws ec2 describe-instances --filters "Name=ip-address,Values=MY_IP" | grep InstanceId | gawk -F: '{ print  }' 
 "i-b0f13081", 
    
por Mona Jalal 20.10.2016 / 20:30

1 resposta

3

awk :

Defina " como delimitador de campo e obtenha o quarto campo:

% awk -F'"' '{print }' <<<'"InstanceId": "i-b0f13081",'
i-b0f13081

Similarmente cut :

% cut -d'"' -f4 <<<'"InstanceId": "i-b0f13081",'
i-b0f13081

grep com PCRE ( -P ):

% grep -Po ':\s*"\K[^"]+' <<<'"InstanceId": "i-b0f13081",'
i-b0f13081

Expansão do parâmetro shell:

% var='"InstanceId": "i-b0f13081",'
% var="${var%\"*}"
% echo "${var##*\"}"
i-b0f13081

sed :

% sed -E 's/^[^:]+:[^"]+"([^"]+).*//' <<<'"InstanceId": "i-b0f13081",'
i-b0f13081

perl :

% perl -pe 's/^[^:]+:[^"]+"([^"]+).*//' <<<'"InstanceId": "i-b0f13081",'
i-b0f13081

python :

% python -c 'import sys; print sys.stdin.read().split("\"")[3]' <<<'"InstanceId": "i-b0f13081",'
i-b0f13081
    
por heemayl 20.10.2016 / 20:32