2012-02-08 2 views
0

して、新しいファイルの行でそれを置く:、コマンドから1つのライン出力を取り、それを分割し、私は次のように情報を出力するコマンドからの出力を取得した場合のライン

{"value1":"value2","value3":"value4","value5":10001,"value6":999.99,} 

することに方法はあります理想的に私は、ファイル内を探していることになる出力は読んでいました/ AWKをgrepするために、その値を渡すと、それは

ので、行ごとに1つの値で、ファイルへの情報を置く新しいファイルを作成してい

value1 
value2 
value3 
value4 
value5: 10001 
value6: 999.99 

任意のポインタ。

+2

Euh、その出力はかなり壊れています。 – Mat

+1

なぜ出力には最初の行に 'value1:value2'がなく、2行目に' value3:value4'? – Johnsyweb

答えて

0

入力はJSONのように見えます。それはあなたが選んだ言語の既存のライブラリを使用してJSONとして解析する必要があります(私はRubyを自分で使用します)。

しかし、入力フォーマットが(例えば、引用符で囲まれた文字列は、複雑な解析を保証することは何も含まれていません)シンプルであれば、あなたはの線に沿って簡単な何かを離れて得ることができるかもしれません:

awk -F , '{ gsub(/(^{)|(}$)|"/, ""); for (i = 1; i <= NF; ++i) print $i }' 

(引用符で囲まれた文字列の中にカンマがあると、これは実際には正確には実行できません)このパスを終了する場合は必要に応じて変更してください)

+0

JSONのおかげでありがとう、私はそれがAPI呼び出しから返されるように出力形式を変更することはできません。そのawkラインは、私が必要とするもの、あなたの助けを借りてくれて、確かに十分なものの近くに戻ってきます! – user1190083

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 
関連する問題