![sed 用于用通配符替换](https://linux22.com/image/174905/sed%20%E7%94%A8%E4%BA%8E%E7%94%A8%E9%80%9A%E9%85%8D%E7%AC%A6%E6%9B%BF%E6%8D%A2.png)
我的意思是替换文件中的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
我找到了。人们应该:
使用一对转义括号
\(...\)
将搜索字符串中要匹配的内容括起来。表达式中最多可以使用 9 个匹配项。用于
\n
重用替换字符串中的匹配字符串。是和n
之间的数字,对应于上面的数字。1
9
这是
sed -e 's/0\.\([0-9]\)/0\,\1/g' mydata.txt