2013-03-27 3 views
2

Я только начал с регулярными выражениями и СЭДОМ, и у меня возник проблемы с следующим:SED - Заменить первое вхождение числа в середине строки

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

Я ищу, чтобы удалить первую цифру (2 в этот случай, но может какой-либо одной цифрой), но я получаю следующее в результате:

"abc2def3ghi" abc2defghi 

Как бы идти о выполнении этого?

Спасибо.

ответ

2

Попробуйте это:

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

Число 1 в s///1 стендами для N-й встречаемости

+1

Ahh, элегантное решение. Спасибо, это трюк. –

+0

Если вы считаете, что ответ полезен, вы можете «перекрыть» его. Если вы считаете, что ответ отвечает хорошо, вы можете «принять» его, щелкнув контур «галочки» (будет зеленым), таким образом, люди, ищущие веб-сайт стека, будут знать, что на этот вопрос ответили хорошо. Вот как работают веб-сайты stackechange, спасибо;) –

+1

Сделаю, спасибо за все. –

1

sed имеет не хотят/не жадный квантор, поэтому вы должны соответствовать нулю или более не цифры а именно:

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

Спасибо за разъяснение в контексте моего первоначального процесса мышления. Весьма признателен. –

Смежные вопросы