2013-05-19 2 views
7

Я запустил эту команду подстановки на Ubuntu 12.04.sed error «Недопустимый конец диапазона»

$ sed -e "s/([a-zA-Z0-9.-/\\ :]+)/\1/g" 

Однако возникает следующая ошибка.

СЭД: -e выражение # 1, символ 27: конец Недопустимый диапазон

я помню, такое же выражение работает на MacOSX.
Можете ли вы описать, почему команда не работает?

ответ

9

Вы можете решить это двумя способами. Один из них заключается в использовании -r переключателя, чтобы избежать экранирования специальных символов и двигаться - в диапазоне до первого или последней позиции и избежать его особого значения, это было бы как:

sed -re "s/([a-zA-Z0-9./\\ :-]+)/\1/g" 

В противном случае вам нужно будет бежать либо ( , ) и +, например:

sed -e "s/\([a-zA-Z0-9./\\ :-]\+\)/\1/g" 
+0

Thx! Он работает в командной строке. Хотя, [здесь] (http://stackoverflow.com/questions/16637799/sed-error-invalid-reference-1-on-s-commands-rhs) является следующим вопросом. – JJD

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