2017-05-29 12 views
-2

我有以下字符串:把字符串中出现的所有新线,则每行只与他们的价值观打印特定参数

{"attributes":{"name":"James Franco","sectors":{"all":{"name":"all","rank":1},"second":{"name":"Actor","rank":1},"third":{"name":"all","rank":1},"team":"BR",{"name":"all","rank":1},"rank":1,"trending":101,rank":1,"BPR":6.50,"SPR":6.10}} 

我只想提取的“姓名”,“BPR” & 'SPR'以及它们各自的值,并将所有三行输出到一行,并将其输出到一个新文件中。

任何人都可以告诉我,如何使用gnu sed,cut等来做到这一点?

+1

使用JSON解析器。 – 123

+0

是否有特别的理由只使用“内部”bash命令? –

+0

https://stackoverflow.com/questions/1955505/parsing-json-with-unix-tools#1955555 – Hackerman

回答

0

使用GNU AWK:

$ awk -F: -v RS="," '{gsub(/[}]/,"");gsub("\n","")} \ 
NR==1{printf "%s:%s%s",$2,$3,RT} $1=="\"BPR\"" || $1=="\"SPR\""{printf "%s%s",$0,RT} \ 
END{printf "\n"}' file 
#Output 
"name":"James Franco","BPR":6.50,"SPR":6.10 
+0

谢谢乔治。你能详细说明这个命令到底在做什么,请把它分解给我吗?我对awk有一个基本的了解,但这看起来相当深入,让我明白了!谢谢。 – LLB3000

相关问题