Вы можете использовать шаблон для соответствия формату строки в скобках с обратной ссылкой на этот захват.
from(=<[^\s@<>]+@[^\s@<>]+>)\s*to\1
Объяснение
-
from
Буквальное совпадение (
Группа захвата 1 =<
Буквальное совпадение [^\s@<>]+
1+ совпадение любого символа, кроме символа пробела или @
<
>
@
Буквальное соответствие [^\s@<>]+
Снова сопоставить 1+ раз любой символ, кроме символа пробела или @
<
>
>
Буквальное соответствие
)
Закрытие группы 1 \s*to\1
Сопоставление 0+ пробельных символов, to
и обратная ссылка на группу 1
Regex demo | Bash демонстрация
Используйте grep -P
вместо -E
для Perl совместимых регулярных выражений.
Например,
echo "from=<test@test.ch> to=<test@test.ch>" | grep -oP 'from(=<[^\s@<>]+@[^\s@<>]+>)\s*to\1'
Немного более широкое совпадение может заключаться в том, что находится между скобками
[^=\s]+(=<[^<>]+>)\s*[^=\s]+\1
Regex demo