【发布时间】:2021-03-21 12:36:16
【问题描述】:
我正在尝试替换“,”,仅当它出现在 65510 和“i”之间时:
2001::/32,fd00::230:5,0,100,0,65510,6939,i
2001:200:900::/40,fd00::230:5,0,100,0,65510,6939,2516,7660,7660,7660,i
所以想要的输出是:
2001::/32,fd00::230:5,0,100,0,65510_6939,i
2001:200:900::/40,fd00::230:5,0,100,0,65510_6939_2516_7660_7660_7660,i
我尝试了以下方法:
sed -e 's/,\([^65510]*\)i/_\1i/' input-file.txt
但输出只替换最后一个“,”:
2001::/32,fd00::230:5,0,100,0,65510,6939_i
2001:200:900::/40,fd00::230:5,0,100,0,65510,6939,2516,7660,7660,7660_i
【问题讨论】:
-
您应该在示例输入/输出中包含一些重要的案例,包括
,165510,foo,i、,655101,foo,i、,65510,foo,65510,bar,i和foo,65510,i,因为它总是很容易匹配您想要的字符串,但是不匹配您不想要的字符串要困难得多!鉴于其中一些输入(可能还有我没有提到的其他输入),所有当前发布的解决方案都将失败。