SED - 替换字符串中间首次出现的数字

时间:2013-03-27 23:19:28

标签: regex sed

我刚开始使用正则表达式和sed,我遇到了以下问题:

echo "abc2def3ghi" | sed 's/^\(.*\)[0-9]\(.*\)$/"&" \1\2/i'  

我希望删除第一个数字(在这种情况下为2,但可以是任何一个数字),但我得到以下结果:

"abc2def3ghi" abc2defghi

我将如何完成这项工作?

感谢。

2 个答案:

答案 0 :(得分:2)

试试这个:

sed 's/[0-9]//1' file.txt

1中的s///1代表第N次出现

答案 1 :(得分:1)

sed没有不情愿/非贪婪的量词,所以你必须特别匹配零个或多个非数字:

^\([^0-9]*\)[0-9]\(.*\)$