-1

Допустим, у меня есть файл со следующей строкой:

[{"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 ответ1

2

Если вход является допустимым 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 -rjson -e 'JSON.load(STDIN).map{|i| puts "name: " + i["name"]}'

Если это не правильный JSON, но в точности как в вашем вопросе:

perl -n -E 's/“|”/"/g; say "name: $1" while /"name":"(.+?)"/g'

Все команды ожидают вашего ввода в качестве стандартного ввода.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .