比方说,我有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"
/(… /(.../)不再需要。