Использование фиксированных строк в регулярных выражениях?

Я пишу сценарий bash, который принимает список CSV-файлов в качестве аргументов и выводит адреса электронной почты, найденные только в первом файле. Чтобы выполнить это, для каждой записи в первом CSV-файле я просматриваю поле адреса электронной почты и считываю его содержимое в переменную оболочки. Затем я использую grep -iE со следующим регулярным выражением, чтобы найти адрес электронной почты, только что найденный во всех остальных файлах, убедившись, что это не подстрока (например, he@a.com – это не то же самое, что она @ a.com ) и позволяет ему быть в начале или конце записи:

 "^(.*,)?($EMAIL_ADDRESS|\"$EMAIL_ADDRESS\")(,.*)?\$" 

Проблема с этим подходом заключается в том, что адреса электронной почты содержат точки, которые имеют особое значение в регулярных выражениях. Мои вопросы:

  1. Как я могу избежать этой проблемы элегантным способом?
  2. Как я могу избежать этой проблемы в более общем контексте, например, когда значение для поиска не является адресом электронной почты, а некоторым свободным текстом и может содержать и другие специальные символы?

One Solution collect form web for “Использование фиксированных строк в регулярных выражениях?”

в perl regexp ( grep -P ... ) вы можете использовать \Q...\E для защиты метасимволов

 grep -P "(^|,)\Q$EMAIL\E(,|$)" file.csv 

где:

  • (^|,) = начало поля
  • (,|$) = конец поля
  • захватить текст из файла vtt
  • добавьте цифру к именам файлов, которые начинаются с цифр (с zmv, пожалуйста)
  • shell переименовывать имена файлов с непечатаемыми символами
  • Как удалить теги html из файла с помощью sed?
  • Как использовать переменные окружения в регулярном выражении в awk?
  • PCRE-regex Используйте grep для исключения группы захвата
  • Как сопоставить конкретную форму необязательной последовательности из краткого руководства, включая варианты?
  • rsyslog: make% syslogtag% равна длине
  • Как найти все соответствия регулярному выражению в строке
  • Простой способ извлечь ценность из HTML
  • Удалите слова (буквы, за которыми следует пробел) из определенного столбца
  • Interesting Posts

    Munin не показывает новый хост при использовании munin-cgi-html

    / dev содержит все разделы, и что содержит / dev?

    Настраивать разделы только в файлах пантеона на ElementaryOS

    xdotool испортил ввод с клавиатуры

    Полное имя пользователя в верхней части

    Перенаправление не переписывание файла, а просто создание пустой

    Установка PCRE 8+ на SLES SP3

    Символическая ссылка на ~ / вместо ~ /

    Вставить после второго шаблона в sed

    Глобальный буфер обмена неспособен копировать новый контент, если работает браузер на основе webkit

    Найдите значение из динамического файла и перейдите к переменной в HTML

    Отключить экран консоли на Debian

    Как пакет работает без всех зависимостей, установленных в целевой системе?

    Linux Mint 15: как разделить Wi-Fi соединение с другими устройствами, подключенными к порту Ethernet?

    сравнивая первый столбец из двух файлов и печатая всю строку второго файла, если совпадают первые столбцы

    Linux и Unix - лучшая ОС в мире.