Использование grep для печати всех соответствующих строк, не разделенных пробелом

Я просматриваю текстовый файл электронной почты и пытаюсь получить список из определенного домена.

Я бегу:

grep -oh "\w*domain.com\w*" file.txt 

Это находит строки, но только печатает это слово, что означает, что если я запустил команду в этом списке:

 foo abc@notit.com bar baz bcd@domain.com abc xyz cde@adomain.com defg klmn def@notit.com ijk yes efg@efg.domain.com no 

Он вернется

 domain.com adomain.com domain.com 

Я хочу, чтобы он вернул весь адрес электронной почты с помощью «domain.com» в нем:

 bcd@domain.com cde@adomain.com efg@efg.domain.com 

Возможно ли это с помощью grep ? Мне нужно сказать, чтобы он не обрабатывал периоды или знаки @ как разрывы слов.

EDIT: В той же строке есть куча нерелевантных данных, которые я бы предпочел не показывать.

  • Шаблон Grep для извлечения строк, где второе слово имеет только две гласные
  • Выполнять команды из истории, которые соответствуют регулярному выражению или grep
  • Как фильтровать базовые csv по столбцам
  • Как grep следующие строки из файла?
  • grep, похоже, игнорирует - include
  • выход ограничения на выход И избежать сигнала 13
  • Почему grep не возвращает то, что я ожидаю, когда я использую одинарные кавычки
  • Как запустить grep с несколькими шаблонами AND?
  • 2 Solutions collect form web for “Использование grep для печати всех соответствующих строк, не разделенных пробелом”

    Ты ищешь

     grep -ho '\S*domain.com\S*' file 

    где \S соответствует не-пробельным символам, поэтому в этом случае grep будет соответствовать всем между пробелами со строкой «domain.com» в нем.

    Альтернативно, если вы хотите явно разрешить только @ и . в строке (кроме буквенно-цифровых символов):

     grep -ho '[[:alnum:].@]*domain.com[[:alnum:].]' file 

    Таким образом grep будет извлекать user@domain.com из строки [user@domain.com] .

    POSIXly:

     <file tr -cs '[[:alnum:].@-_]' '[\n*]' | grep domain\.com bcd@domain.com cde@adomain.com efg@efg.domain.com 
    Linux и Unix - лучшая ОС в мире.