假设我有一个包含以下行的文件:
[{"name”:”10.0.0.1”,”address":"10.0.0.1”,”subscriptions["all"],"version":"0.0.0”,”timestamp":1450270166},{"name":"10.0.0.2","address":"10.0.0.2","subscriptions":["all"],"version”:”0.0.0”,”timestamp":1450390819}]
在这里我需要得到类似的输出
name:10.0.0.1
name:10.0.0.2
任何想法?
答案1
如果输入是有效的 JSON,则使用jq
:
jq --raw-output '"name: " + .[].name'
jq --raw-output .[].name | sed "s/^/name: /"
或者jshon
:
jshon -a -e name -u | sed "s/^/name: /"
或者 Perl:
perl -MJSON -E 'say "name: ", $_->{name} for @{from_json(<>)}'
或 Ruby:
ruby -rjson -e 'JSON.load(STDIN).map{|i| puts "name: " + i["name"]}'
如果它不是有效的 JSON 但与您的问题完全一样:
perl -n -E 's/“|”/"/g; say "name: $1" while /"name":"(.+?)"/g'
所有命令都要求您将输入作为标准输入。