sed命令替换文件中未使用“查找并替换”的值

sed命令替换文件中未使用“查找并替换”的值,sed,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 与 问题是我需要知道前面的值 是否有办法始终从文件中的字符串中删除0.0.30并用新值替换它 可能是索引或子字符串 您可以使用正则表达式定义来匹配0.0.30,并将其替换为0.0.31,如下所

我有一个带有字符串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 与

问题是我需要知道前面的值

是否有办法始终从文件中的字符串中删除0.0.30并用新值替换它


可能是索引或子字符串

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

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

参见正则表达式的解释。

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

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

请参阅regex的解释。

我已经测试了上述问题,它也替换了文件中的0.0.31,如果这样做的话sense@Flenters当前位置你没有清楚地解释那件事。因此,您有多个这样的模式,在每个模式中,将最后一个数字替换为1?
sed-i--posix的/[:digit:]\[:digit:]\[:digit:]\[:digit:]\{2\}/0.0.31/'文件
更好,不是吗?这太完美了。请你解释一下这个表达,好让我学习一下。所以我认为[[:digit:]是数字。在\{2\}的结尾,\做了什么?@Quasímodo:同意。编辑了答案。
\(..\)
在这里是多余的。我已经测试了上面的问题,它也替换了文件中其他数字的0.0.31,如果这样做的话sense@Flenters当前位置你没有清楚地解释那件事。因此,您有多个这样的模式,在每个模式中,将最后一个数字替换为1?
sed-i--posix的/[:digit:]\[:digit:]\[:digit:]\[:digit:]\{2\}/0.0.31/'文件
更好,不是吗?这太完美了。请你解释一下这个表达,好让我学习一下。所以我认为[[:digit:]是数字。在\{2\}的结尾,\做了什么?@Quasímodo:同意。编辑了答案。
\(..\)
在这里是多余的。显然,您的示例输入不够具有代表性,回答者只能猜测适用于该简单输入的解决方案,但是你的真实输入会失败。对不起,我的错误又添加了一些数据。伊尼安的回答怎么会在输入上失败?显然,你的示例输入不够有代表性,回答者只能猜测一个对简单输入有效的解决方案,对不起,我的错误又添加了一些数据。伊尼安的回答怎么会在输入上失败呢?