2016-06-13 99 views
0

我有一個像這樣的JSON文件,我想用sed/awk替換某些鍵並添加新鍵,例如我不能使用json解析器,如jq,因爲這需要安裝程序和產品環境有限。使用sed/awk修改巨大的JSON文件

輸入:

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

輸出:

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

坦率地說,你應該只吸起來,並在那裏獲得JQ 。你在這裏做的操作不是微不足道的,而是用jq。使用sed/awk也不能這麼說。 –

+1

'jq'是一個很好的工具,但如果你真的無法安裝它,那麼環境中還有什麼其他可用的東西? 'sed'和'awk'將會非常困難,但是Perl或Python會這樣做。 – smarx

+0

感謝您的迴應,但目標環境是受限制的生產環境,它具有基本GNU實用程序的RHEL6 – jsphdnl

回答

3

sed的不是那個合適的工具。

也就是說,以下命令將您的樣品文件(在生產環境中使用它風險自擔)工作:

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