sed命令替换不使用查找和替换的文件中的值

时间:2020-05-21 16:11:34

标签: sed

我有一个字符串为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并将其替换为新值?

可能是indexof或子字符串。

1 个答案:

答案 0 :(得分:2)

您可以使用正则表达式定义来匹配0.0.30并将其替换为0.0.31,如下所示。 --posix标志用于确保不应用任何GNU方言,并使用纯BRE(基本正则表达式)库。由于\{2\}是一种BRE语法,可以匹配2次出现的数字。

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

请参阅正则表达式here的说明。