我想在两行中增加配置文件中的版本号,如下所示:
version:
abc01: 1.13.0
abc02: 1.13.0
为此,我尝试使用sed
命令-匹配abc01
和abc02
,然后将其替换为abc0X 1.14.0
,但我认为这不是理想的解决方案,它缺少TAB。
sed -i -e 's/.*abc01.*$/\abc01 1.14.0/g' config.yaml
答案 0 :(得分:1)
如果abc01
在您的输入中没有出现,解决此问题的最简单方法是避免匹配其前面的空格,以便您不受影响:
sed -i -e 's/abc01.*$/abc01 1.14.0/g' config.yaml
如果不是这种情况,则可以在替换模式中引用的捕获组中捕获行的开头:
sed -i -E 's/(.*abc01).*$/\1 1.14.0/g' config.yaml
答案 1 :(得分:1)
使用awk:
awk -v FS='.' -v OFS='.' '/abc/{$2++} {print}' file
或
awk -v FS='.' -v OFS='.' '/abc/{$2++}1' file
或
awk 'BEGIN{FS=OFS="."} /abc/{$2++}1' file
或
awk '/abc/{$2++}1' FS='.' OFS='.' file
输出:
version: abc01: 1.14.0 abc02: 1.14.0
请参阅:8 Powerful Awk Built-in Variables – FS, OFS, RS, ORS, NR, NF, FILENAME, FNR
答案 2 :(得分:0)
尝试一下:
sed -E 's/(abc0.: 1\.1)./\14/' config.yaml