在Linux Terminal中使用Sed命令重复两次string中的数字

比方说,我有hell0 w0rld ,我想它成为hell00 w0rld 。 我试过sed s/0/00/ he1lo wor1d(he11lo wor1d) sed s/0/00/ ,但是只能代替0 ,它不适用于he1lo wor1d(he11lo wor1d) ,我能做些什么来取代第一个数字而不是0 ? 谢谢!

既然你不想匹配只有0 ,但任何数字,你想要使用[0-9] 。 这代表“0-9中的任何一个”。 你把它放在圆括号里“捕获”它,在替换字符串中,你可以添加backrefences:

 $ sed 's/\([0-9]\)/\1\1/' <<< "he1lo wor1d" he11lo wor1d 

如果你想重复第一个数字 (按照标题),而不是数字,你可以将\+添加到你的角色类中。 这代表“一个或多个这些”:

 $ sed 's/\([0-9]\+\)/\1\1/' <<< "he12o wor1d" he1212o wor1d 

反向引用\1的替代方案与捕获组/(… /(.../)匹配,将使用&表示完全匹配,即,

 sed 's/[0-9]/&&/' <<< "he1lo wor1d" 

 sed 's/[0-9]\+/&&/' <<< "he12lo wor1d" 

/(… /(.../)不再需要。