sed命令可以替换文件中没有使用查找和替换的值。

问题描述 投票:0回答:1

我有一个字符串为log.txt的文件,在文件中我有多行文字

line 1 text
line2/random/string/version:0.0.30
line 3 randome stuff
http://someurl:8550/

所以目前我使用的是 sed 找到并将0.0.30替换为一个新的值,如0.0.31与

sed -i s/0.0.30/0.0.31/g log.txt

这个问题是我需要知道之前的值,有没有办法从文件中的字符串中删除0.0.30,然后用新的值代替?

有没有一种方法可以从文件中的字符串中删除0.0.30,然后用一个新的值来代替?

也许是一个indexof或者一个子串。

sed
1个回答
2
投票

你可以使用一个regex定义来匹配。0.0.30 并代之以 0.0.31 如下所示。该 --posix 标志是为了确保不使用GNU方言,使用纯正的BRE(Basic Regular Expressions)库。因为 \{2\} 是一个BRE语法,用于匹配数字的2次出现。

sed -i --posix 's/[[:digit:]]\.[[:digit:]]\.[[:digit:]]\{2\}/0.0.31/' file

请看对regex的解释 此处.

热门问题
推荐问题
最新问题