我想只保留10.100.52.11并删除其他所有内容,10.100.52.11不断更改,所以我不想硬编码
原始输出如下
"PrivateIpAddress": "10.100.52.111",
我尝试了以下命令并删除了“PrivateIpAddress”:“
sudo aws ec2 describe-instances --filter Name=tag:Name,Values=bip-spark-es-worker1 |grep PrivateIpAddress |head -1|sed 's/^[ ^t]*\"PrivateIpAddress\"[:]* \"//g'
所以上面命令的输出现在是
10.100.52.111",
我想删除结尾引号和逗号。
我尝试使用["].$
并且\{2\}.$
也无效。
请帮忙。
答案 0 :(得分:1)
让sed完成所有工作。你不需要grep或head:
sed -n '/"PrivateIpAddress": /{s///; s/[",]//g; p; q}'
答案 1 :(得分:1)
如果"
中的内容本身没有"
,
grep PrivateIpAddress |head -1|sed 's/^[ ^t]*\"PrivateIpAddress\"[:]* \"//g'
可以替换为
awk -F\" '/PrivateIpAddress/{print $4; exit}'
-F\"
使用"
作为字段分隔符/PrivateIpAddress/
如果line与此字符串匹配
print $4
打印第4个字段,对于给定的样本<{1}} 10.100.52.111
将退出,因为只需要第一场比赛答案 2 :(得分:0)
替代方案:
$ echo "\"PrivateIpAddress\": \"10.100.52.111\", "
"PrivateIpAddress": "10.100.52.111",
$ echo "\"PrivateIpAddress\": \"10.100.52.111\", " |grep -Po '(\d+[.]){3}\d+'
10.100.52.111
$ echo "\"PrivateIpAddress\": \"10.100.52.111\", " |grep -Eo '([[:digit:]]+[.]){3}[[:digit:]]+'
10.100.52.111
答案 3 :(得分:0)
一些awk提案
echo '"PrivateIpAddress": "10.100.52.111",'| awk -F: '{print substr($2,3,13)}'
10.100.52.111
echo '"PrivateIpAddress": "10.100.52.111",'| awk -F\" '{print $4}'
10.100.52.111