Регулярное выражение ^ $ не работает в UNIX, используя команду grep

Я столкнулся с проблемой использования регулярного выражения ^$ в UNIX.

Когда я grep '^hello$' text в командной строке, в результате он должен соответствовать слову «hello», потому что это единственное слово в определенной строке в текстовом файле. К сожалению, это не так.

Я попробовал это, даже когда не было слов ни на одной линии, кроме «привет», а затем и не работает.

One Solution collect form web for “Регулярное выражение ^ $ не работает в UNIX, используя команду grep”

Согласно комментариям, существуют разные причины, по которым это может не совпадать, но выглядят «невидимыми».

Один общий режим отказа – файл находится в формате DOS.

В вашем случае у вас есть скрытые пробелы (пробелы или символы TAB) в конце строки.

Команды, такие как tr ' ' ! < filename tr ' ' ! < filename или cat -e filename может помочь разоблачить эти символы.

  • Поиск слова и его замена во всем файле с помощью Egrep
  • Поиск файлов, содержащих символы, отличные от ASCII
  • zgrep против egrep против grep
  • Уникальная идентификация Java-процессов с тем же именем
  • Поиск строки в файлах в текущем каталоге, опустить дубликаты
  • Использование фильтра grep
  • Почему grep не работает?
  • Сколько текста grep / egrep потребляет каждый раз?
  • Как использовать sed, awk или grep для удаления определенного шаблона, но все остальное
  • Как свернуть 'grep -c <токен> * .h * .cpp' в один счет?
  • Как использовать grep и вырезать скрипт для получения URL-адресов веб-сайтов из файла HTML
  • Linux и Unix - лучшая ОС в мире.