我有這個檔案simple.yml:
services:
- name: first
image: first_image
versionId: 1.0.0_first_image_id
- name: second
image: second_image
versionId: 2.0.1_second_image_id
我正在嘗試versionId用這個值替換第二次出現的 :versionId: image_id_edited以便檔案看起來像這樣:
services:
- name: first
image: first_image
versionId: 1.0.0_first_image_id
- name: second
image: second_image
versionId: image_id_edited
這里的值2.0.1_second_image_id經常改變,所以我不能做靜態搜索。目前,我有這個sed命令,但它不作業:
sed -rz "s/versionId:\s*.*\$/versionId: image_id_edited/2" -i simple.yaml
我想要一個正則運算式來搜索第二個versionId: ...,直到它到達行尾!謝謝!
uj5u.com熱心網友回復:
您似乎指望該-z標志導致整個輸入被解釋為單行,以便2您的s命令的標志導致整個檔案中的第二個匹配被替換。問題是相關計數超過了非重疊匹配。您的模式被錨定到行尾,您需要在多行模式下進行匹配,以便有可能出現兩個不重疊的匹配:
sed -rz 's/versionId:\s*.*$/versionId: image_id_edited/m2' -i simple.yaml
也就是說,在命令中添加一個m標志。s
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/444735.html
上一篇:Shell腳本輸出格式化回顯
