Почему я получаю сообщение об ошибке «отсутствует завершение] для класса символов»?

Я хочу вырезать строку с квадратными скобками, используя sed .

Как избежать ошибки, если я хочу отбросить строку с [? Например:

$ echo '[Om/mystring' | grep -oP '(?<=[Om\\)\w+'
grep: missing terminating ] for character class
3
задан 23 February 2018 в 16:05

2 ответа

Как ошибка при пропавших без вести завершающийся] для класса символов уже говорит, проблема здесь имеет отношение [, из которого необходимо выйти. Иначе это понято как класс символов grep.

Кроме того, Вы говорите //, в то время как Вы хотите использовать / вместо \ согласно Вашему входу.

Все вместе, это печатает ряд слов после [Om/:

$ echo '[Om/mystring' | \grep -oP '(?<=\[Om\/)\w+'
mystring
7
ответ дан 1 December 2019 в 12:59

Вы получаете ошибку потому что [ специальный символ в синтаксисе регулярного выражения, представляя класс символов. Чтобы рассматриваться как строковый литерал, этого нужно оставить т.е. \[

Если Вы просто хотите удалить [Om/ префикс, затем это - более простой sed при использовании разделителя, который не появляется в шаблоне:

$ echo '[Om/mystring' | sed 's;\[Om/;;'
mystring
6
ответ дан 1 December 2019 в 12:59

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

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