Linux'ta bir satırdan belirli bir bölüm nasıl gösterilir?


-1

Diyelim ki aşağıdaki satırda bir dosya var:

[{"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}]

Burada çıktı gibi bir şey olması gerekir

name:10.0.0.1
name:10.0.0.2

Herhangi bir fikir?


1
Bu geçerli bir JSON değil. Olmalı mı?
fedorqui

Deneyinawk -F"," '{print $1}' data | sed 's/\[{//' | sed 's/”//g' | sed 's/"//g'
MariusMatutiae 18:15

Yanıtlar:


2

Giriş geçerli JSON ise, jqşunları kullanın :

jq --raw-output '"name: " + .[].name'

jq --raw-output .[].name | sed "s/^/name: /"

Veya jshon:

jshon -a -e name -u | sed "s/^/name: /"

Veya Perl:

perl -MJSON -E 'say "name: ", $_->{name} for @{from_json(<>)}'

veya Ruby:

ruby -rjson -e 'JSON.load(STDIN).map{|i| puts "name: " + i["name"]}'

Geçerli bir JSON değilse, ancak sorunuzdaki gibi:

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

Tüm komutlar girişinizi stdin olarak bekler.


Hiç duymadım jshon, çok iyi bitti!
fedorqui
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.