如果我从以下列方式输出信息的命令中获得输出:
{"value1":"value2","value3":"value4","value5":10001,"value6":999.99,}
有没有办法将该值传递给grep / awk并让它创建一个新文件,将信息放入每行1个值的文件中
理想情况下,我在文件中寻找的输出会读取
value1
value2
value3
value4
value5: 10001
value6: 999.99
欣赏任何指针。
答案 0 :(得分:0)
输入看起来像JSON。如果它是你应该使用现有的库解析它作为你选择的语言的JSON(我会自己使用Ruby)。
但是如果输入格式很简单(例如,引用的字符串不包含任何可以保证复杂解析的内容),那么您可以通过以下方式处理简单的事情:
awk -F , '{ gsub(/(^{)|(}$)|"/, ""); for (i = 1; i <= NF; ++i) print $i }'
(请注意,这实际上并不完全符合您的要求,如果引用的字符串中有逗号,它就会中断。如果沿着这条路走下去,请根据需要进行修改。)
答案 1 :(得分:0)
嗯,你期待有点奇怪的输出......无论如何,sed
:
$ echo '{"value1":"value2","value3":"value4","value5":10001,"value6":999.99,}' | sed '{ s/[\{"\}]//g ; s/,/\n/g ; s/:\([^0-9]\)/\n\1/g; s/:\([0-9]\)/: \1/g}'
value1
value2
value3
value4
value5: 10001
value6: 999.99