首页 > 解决方案 > 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 或子字符串。

标签: sed

解决方案


您可以使用正则表达式定义来匹配0.0.30和替换它,0.0.31如下所示。该--posix标志是为了确保没有应用 GNU 方言并使用纯 BRE(基本正则表达式)库。因为\{2\}是匹配 2 次出现的数字的 BRE 语法。

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

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


推荐阅读