sedはファイル内で検索と置換

sedはファイル内で検索と置換

次のように1行のjsonファイルがあります。

"image": "docker.abc.com/abc-pr0000abc:ABCCoreUI-46",

誰もが次のようにsedコマンドを使用して上記のコマンドを置き換えるのに役立ちますか?

"image": "docker.abc.com/abc-pr0000abc:ABCCoreUI-47",

また、ABCCoreUI-*のようなワイルドカード46が欲しいです。

頑張ったsed s/ABCCoreUI-4*/ABCCoreUI-47/ file.json

出力は、

"image": "docker.abc.com/abc-pr0000abc:ABCCoreUI-4742",

ありがとう

答え1

また、ABCCoreUI-*のようなワイルドカード46が欲しいです。

「文字列の末尾の数字と一致するようにパターンを変更します。おそらく、*最後の位置の文字の動作により、出力は47 + 42にリンクされます。」という質問に答えた人がいないと思います。

''回避するために正規表現をラップできます。シェル球

次に、0個以上の数字を一致させます。

sed -r 's/ABCCoreUI-[0-9]*/ABCCoreUI-47/' file.json
sed -r 's/ABCCoreUI-[[:digit:]]*/ABCCoreUI-47/' file.json

0個以上の文字の一致

sed -r 's/ABCCoreUI-.*/ABCCoreUI-47/' file.json
  • -r例 拡張sed正規表現の有効化
  • [0-9]または[[:digit:]](POSIX) 一致番号
  • [0-9]*または[[:digit:]]*0個以上の数字と一致
  • .*0個以上の文字の一致

これは\dうまくいきません。

答え2

この迅速で汚いアプローチsedはトリックを実行するようです。

sed '/image.*docker\.xxx\.com.*CoreUI-46/s/CoreUI-46/CoreUI-47/' /path/to/yourfile.json

答え3

最も簡単な場合は、以下を適用できます。sed方法:

sed 's/\("image": "[^"]*-\)46"/\147"/g' jsonfile

答え4

次は私のために働いた

sed "s|\(^.*\"image\": \"docker.abc.com/abc-pr0000abc:\).*|\ABCCoreUI-47\",|g" -i artifactorytest.json

関連情報