2016-06-13 6 views
0

私はこのようなJSONファイルを持っていますが、特定のキーを置き換えて新しいキーを追加したいのですが、jqのようなjsonパーサは使用できません。製品環境は限られています。sed/awkを使用して巨大なJSONファイルを修正する

入力:

[{ 
    "key1": "value1", 
    "key2": "23456734", 
    "nestedKey1": { 
     "234567890": { 
      "key2": "value3", 
      "key4": "value4" 
     } 
    } 
}] 

出力:sedを

[{ 
    "key2": "value1:23456734", 
    "nestedKey1": { 
     "CONSTANT:234567890": { 
      "key4": "value4" 
     } 
    } 
}] 
+2

率直に言って、あなたはそれを吸うと、そこにJQを取得する必要があります:次のコマンドは(本番環境で独自のリスクでそれを使用する)あなたのサンプルファイルで動作します、と述べ

。ここでやっている操作は簡単ではありませんが、jqにあります。同じことはsed/awkを使っても言えません。 –

+1

'jq'はこのための素晴らしいツールですが、本当にインストールできない場合は、環境の中で何が使えますか? 'sed'と' awk'はこれで本当に苦労するでしょうが、PerlやPythonはそうするでしょう。 – smarx

+0

応答してくれてありがとうございますが、ターゲット環境が実稼働環境に制限されていて、基本的なGNU utilsを持つRHEL6を持っています – jsphdnl

答えて

3

は、そのための適切なツールではありません。

sed ' 
/*"key1"/ { 
    N 
    s/ *"key1": "\([^"]*\)",\n\(*"key2": \)"\([0-9]*\)"/\2"\1:\3"/ 
} 
/"nestedKey1": {/ { 
    N 
    s/"\([0-9]*"\)/ "CONSTANT:\1/ 
    n 
    /key2/d 
} 
' file 
+0

ありがとうございました! – jsphdnl

関連する問題