如何删除输出列表中的“”?

如何删除输出列表中的“”?

我使用命令从 EC2 获取 IP 列表。

到目前为止我得到的结果是这样的列表:

[
    "172.31.11.7",
    "172.31.48.141",
    "172.31.64.201",
    "172.31.64.149",
    "172.31.64.148",
    "172.31.64.111"
]

我想要得到的结果为:

172.31.11.7
172.31.48.141
172.31.64.201
172.31.64.149
172.31.64.148
172.31.64.111

我怎样才能做到这一点?

答案1

使用jq

jq -r '.[]' file

使用egrep

egrep -o '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' file

或者

egrep -o '([0-9]+\.){3}[0-9]+' file

使用grep

grep -o '[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*' file

答案2

对于该样本,

cut -d'"' -sf2

就足够了。它返回第一次和第二次"出现之间的行部分,并 (with -s) 丢弃不包含任何 的行"

答案3

使用 AWK,

  awk -F '"' '{if (NF==3) print $2}' file
  • 用作分隔符
  • 打印第二个字段$2
  • NF==3如果字段的最大数量等于 3

答案4

awk -F\" 'NF>1{print $2}' file

相关内容