поиск и замена несоответствия между vim и sed

Используя Ubuntu 12.04 и vim 2.22.0, почему внутри vim я буду использовать:

:9s/\d\+/1/

, чтобы изменить первую цифру упомянутой строки на 1, но не смог использовать То же самое с sed:

sed -i '9s/\d\+/1/' /home/file/foo

Я до сих пор не получаю ни ошибок, ни изменений в файле. Есть ли у нас какие-либо несоответствия между функциями команд vim и sed?

1
задан 31 July 2013 в 01:20

1 ответ

sed и vim не связаны (ну вроде как, но это далеко). Их команды замещения похожи, но далеко не идентичны. Оба они используют базовые регулярные выражения, но vim имеет свои расширения для него, а GNU sed имеет другие расширения для него.

\d соответствует цифре в vim, в GNU sed она соответствует d. Чтобы сопоставить цифру в sed, используйте [[:digit:]] или [0-9] (и они также будут работать в vim).

\+ также является расширением как в vim, так и в GNU sed. Стандартный способ сопоставить одно или несколько значений - использовать \{1,\}.

0
ответ дан 31 July 2013 в 01:20

Другие вопросы по тегам:

Похожие вопросы: