用sed替换2点之间的字符串

用sed替换2点之间的字符串,sed,Sed,我的文件包含如下行: level0.1.level1.1.level1 level0.1.level1.2.level2 我想用“{I}”替换“.x.” 因此,所需的行如下所示 level0.{i}.level1.{i}.level1 level0.{i}.level1.{i}.level2 当我们查找“.x.”时,表示“.”后跟任何字符 后跟“.”,sed的搜索模式为 “\..\”,因为我们需要用“\”来逃避“.”。 找到匹配项后,将其替换为“{i}” 结尾的“/g”表示有多个这样的替换

我的文件包含如下行:

level0.1.level1.1.level1
level0.1.level1.2.level2
我想用“{I}”替换“.x.”

因此,所需的行如下所示

level0.{i}.level1.{i}.level1
level0.{i}.level1.{i}.level2
当我们查找“.x.”时,表示“.”后跟任何字符 后跟“.”,sed的搜索模式为 “\..\”,因为我们需要用“\”来逃避“.”。 找到匹配项后,将其替换为“{i}” 结尾的“/g”表示有多个这样的替换

 cat file | sed 's/\..\./.{i}./g'  
使用sed

sed -r 's/[.][0-9]+[.]/.{i}./g'
碰撞试验

 echo 'level0.1.level1.2.level2'|sed -r 's/[.][0-9]+[.]/.{i}./g'
输出

level0.{i}.level1.{i}.level2

在{}里面漏掉了一个“i”。感谢您的俱乐部请为您的代码片段提供一个简短的解释,以捕获所有
.x.
模式(包括那些相邻的模式)使用:
:a;sed's/\..\./.{i}./g;ta'文件
。注意:第二个
是第一个邻接项。“您是否用文件测试过它?结果将是相同的..命令行使用sed-r的/[.][0-9]+[.]/.{i}./g'文件..:D