Linux ошибка регулярного выражения: «несоответствие sla sh и фигурные скобки» - PullRequest
1 голос
/ 05 мая 2020

У меня есть несколько строк, и среди них:

103120!WIFF SOFTBALL BAT I  !25 !20 !01-JUN-90
103121!WIFF SOFTBALL BAT II !30 !24 !01-JUN-90

Мне нужно написать регулярное выражение для grep, которое отображает строки с 'летучей мышью' и заканчиваются на 90.

grep ‘^.*BAT((.*!)\{\1}))\{\3}90$'

Появляется ошибка: unmatched \{. Я проверил, какой из парантезов не подходит, но результата не было.

1 Ответ

1 голос
/ 05 мая 2020

Ошибка связана с неэкранированным }. Вы пробовали использовать квантификатор интервала в шаблоне POSIX BRE, но вы не избежали как {, так и }.

Однако, похоже, вы можете просто использовать

grep 'BAT.*90$' file

См. онлайн grep демо

Шаблон BAT.*90$ POSIX BRE здесь соответствует

  • BAT - подстроке BAT
  • .* - любые символы 0+
  • 90$ - 90 в конце строки (строка здесь как grep по умолчанию работает построчно)

Поскольку не использовалась опция -o, grep выведет все строки, содержащие этот шаблон, без необходимости в части ^.*.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...