次のテキストを含むJSONファイルがあります。
{"category": "yyy", "id": "xxxyyy", "environment": "fff", "client": "000000", "user": "Alex", "log_time": "xxx", "source_context": null}
user
そのファイルでキーを見つけ、その値をまったく同じサイズ(=、=)Alex
に置き換える必要があります。コマンドを試してみましたが、正しく動作しませんでした。XXXX
Alex
XXXX
Tom
XXX
sed
答え1
テキスト指向パーサー(例:)を使用しないでくださいsed
。代わりにJSON対応パーサーを使用してください(例:jq
。
システムにこのツールがある場合は、単に次のことができます。
jq '.user |= gsub(".";"X")' file
これにより、すべてのキー文字列がuser
同じ数の文字X
に置き換えられます。
jq
これをサポートしていない場合は、次gsub
のように使用できます。
jq '.user |= ([range(0;length)]|.[]="X"|add)' file