2017-12-11 11 views
2

sedを使用してキーの値を置き換えますが、sedは正規表現と正しく一致していないようです。私が持っているJSONは、このに似ている正規表現パターンと一致しないSedが一致するはずです

... 
    "env": { 
     "emailBxUrl": "placeholder" 
    }, 
... 

と私が持っているのsedコマンドでは、コマンドを実行した後

sed -i "s/^(\ |\t)+\"emailBxUrl\"\:.*$/test/gm file1.json 

、これで、ファイルが変更されませんでした。私はregexrで正規表現をチェックし、それはだから私は意図したとおりに動作しないようにsedコマンドのために何をしないのです

enter image description here

以下のようにうまく「emailBxUrl ...」行を見つけましたか?

+2

オンラインサイトは、SEDのために動作しません私のために働いた、sedを使用したい場合は、質問に答えるためにsedは正規表現のBRE/EREの味しかサポートしていないので... https://unix.stackexchange.com/questions/119905/why-does-my-regular-expression-work-in-x-but-not-in-これはGNU sedのsedの/^[\ t] \ + "emailBxUrl":。*/test/''で動作するかもしれませんが、実際にはjsonの正規表現を避けるべきです。 jqまたはjsonモジュールを持つpythonも参照してください。http://mywiki.wooledge.org/Quotes – Sundeep

+1

sedコマンドに-Eを追加する必要があります。 –

+0

拡張jsonを投稿してください内容 – RomanPerekhrest

答えて

1

コメントで示唆したように、私はJQを使用することにしましたが、誰もが本当にグレン・ジャックマンの提案は

sed -ri 's/^[[:blank:]]+"emailBxUrl":.*$/test/gm' file1.json 
関連する問題