Я хочу вырезать строку с квадратными скобками, используя sed
.
Как избежать ошибки, если я хочу отбросить строку с [
?
Например:
$ echo '[Om/mystring' | grep -oP '(?<=[Om\\)\w+'
grep: missing terminating ] for character class
Как ошибка при пропавших без вести завершающийся] для класса символов уже говорит, проблема здесь имеет отношение [
, из которого необходимо выйти. Иначе это понято как класс символов grep.
Кроме того, Вы говорите //
, в то время как Вы хотите использовать /
вместо \
согласно Вашему входу.
Все вместе, это печатает ряд слов после [Om/
:
$ echo '[Om/mystring' | \grep -oP '(?<=\[Om\/)\w+'
mystring
Вы получаете ошибку потому что [
специальный символ в синтаксисе регулярного выражения, представляя класс символов. Чтобы рассматриваться как строковый литерал, этого нужно оставить т.е. \[
Если Вы просто хотите удалить [Om/
префикс, затем это - более простой sed при использовании разделителя, который не появляется в шаблоне:
$ echo '[Om/mystring' | sed 's;\[Om/;;'
mystring