我有以下配置文件:
dependencies:
- name: server2
version: 1.0.0.0
repository: "repository2"
- name: server1
version: 4.3.2.1
repository: "repository2"
我现在想用“ newVersion”之类的东西替换服务器1的版本。
版本始终在名称下方,我想替换版本号(4.3.2.1),但我不知道该编号,因此我必须替换'version:'和'\ n之间的所有内容'。
我知道我想更改server1的版本。
我尝试了以下操作:
sed ':a;N;$!ba;s/server1\n\s\sversion:/newVersion/}' file.txt
我知道sed如果没有N运算符就无法“正常”读取多行,但是它仍然对我不起作用,有人可以在这里帮助我吗?
答案 0 :(得分:1)
此sed
应该这样做:
$ sed '/name: server1$/{n;s/version: .*/version: 5.4.3.2/}' data
dependencies:
- name: server2
version: 1.0.0.0
repository: "repository2"
- name: server1
version: 5.4.3.2
repository: "repository2"
答案 1 :(得分:0)
此sed在name: server1$
和version:
之间用version: .*
替换了version: newVersion
。
sed '/name: server1$/,/version: /s/version: .*/version: newVersion/'