sed 用于用通配符替换

sed 用于用通配符替换

我的意思是替换文件中的mydata.txt

<time="0.*" name="file000.txt"/>

<time="0,*" name="file000.txt"/>

“零点数字的东西" 应替换为 "零逗号一样的东西”。而且我不必替换文件名中的点。

我可以检测sed这两次出现之间的差异0\.[0-9](它匹配第一个,但不匹配第二个),但我不知道如何告诉sed保留替换字符串一样的东西(无论匹配什么)

sed -e 's/0\.[0-9]/0\,?/g' mydata.txt

?在这个表达式中我应该使用什么来代替?

答案1

只需将值放入寄存器并从那里恢复它,如下所示:

sed -e 's/0\.\([0-9]\)/0\,\1/g' mydata.txt

答案2

我找到了。人们应该:

  1. 使用一对转义括号\(...\)将搜索字符串中要匹配的内容括起来。表达式中最多可以使用 9 个匹配项。

  2. 用于\n重用替换字符串中的匹配字符串。是和n之间的数字,对应于上面的数字。19

这是

sed -e 's/0\.\([0-9]\)/0\,\1/g' mydata.txt

相关内容