次のように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