Sed - 删除最后两个字符引号和逗号

时间:2017-04-18 22:59:50

标签: unix sed

我想只保留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\}.$也无效。 请帮忙。

4 个答案:

答案 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