我运行以下命令:
aws ec2 describe-instances --filters "Name=ip-address,Values=MY_IP" | grep InstanceId
我得到:
"InstanceId": "i-b0f13081",
我怎样才能仅获得以下内容:
i-b0f13081
这是我尝试过的:
aws ec2 describe-instances --filters "Name=ip-address,Values=MY_IP" | grep InstanceId | gawk -F: '{ print $2 }'
"i-b0f13081",
答案1
awk
:
设置"
为字段分隔符,并获取第4个字段:
% awk -F'"' '{print $4}' <<<'"InstanceId": "i-b0f13081",'
i-b0f13081
相似地cut
:
% cut -d'"' -f4 <<<'"InstanceId": "i-b0f13081",'
i-b0f13081
grep
使用 PCRE( -P
):
% grep -Po ':\s*"\K[^"]+' <<<'"InstanceId": "i-b0f13081",'
i-b0f13081
Shell参数扩展:
% var='"InstanceId": "i-b0f13081",'
% var="${var%\"*}"
% echo "${var##*\"}"
i-b0f13081
sed
:
% sed -E 's/^[^:]+:[^"]+"([^"]+).*/\1/' <<<'"InstanceId": "i-b0f13081",'
i-b0f13081
perl
:
% perl -pe 's/^[^:]+:[^"]+"([^"]+).*/$1/' <<<'"InstanceId": "i-b0f13081",'
i-b0f13081
python
:
% python -c 'import sys; print sys.stdin.read().split("\"")[3]' <<<'"InstanceId": "i-b0f13081",'
i-b0f13081