Какие RE могут использовать оператор = ~

На странице man для bash это говорит об операторе =~ :

Доступен дополнительный бинарный оператор, = ~, с тем же приоритетом, что и == и! =. Когда он используется, строка справа от оператора считается расширенным регулярным выражением и соответствующим образом соответствует (как в regex (3) )

Тем не менее, я считаю, что даже тривиальные RE не работают. Вот мой пример использования:

 n='hello' [[ "$n" =~ 'llo' ]] && echo yes || echo no # <-- yes [[ "$n" =~ 'llo$' ]] && echo yes || echo no # <-- no 

Учитывая, что $ является стандартным индикатором RE для EOL, почему второе сравнение возвращает «нет»?

  • Найти файлы не в белом списке регулярных выражений
  • Сопоставьте текущую строку до строки, которая не соответствует шаблону
  • эффект * в регулярном выражении
  • с sed, как я могу заменить слово в соответствующей строке?
  • Как обрабатывать файл как одну строку с помощью grep для применения шаблона поиска регулярного выражения?
  • sed regex issue
  • Печатать текст между тегами (включительно), если обнаружен определенный текст
  • Хотите заменить слова пространством в нескольких файлах, используя SED commmand
  • One Solution collect form web for “Какие RE могут использовать оператор = ~”

    Вы не читали страницу руководства тщательно, он также сказал:

    Любая часть шаблона может быть процитирована, чтобы заставить цитированную часть соответствовать строке.

    Таким образом, $ в вашей строке означает буквальный знак доллара вместо конца строки. Перемещение $ из строки, чтобы заставить ее работать:

     $ [[ "$n" =~ 'llo'$ ]] && echo yes || echo no yes 
    Linux и Unix - лучшая ОС в мире.