Вы можете использовать virtual_alias_maps [*]:
virtual_alias_maps = regexp:/etc/postfix/aliases
и заполнить /etc/postfix/aliases
/t(.*)@mydomain.com/ support@mydomain.com
Вы, конечно, можете точно настроить regex для точного соответствия вашему коду ticketid (т.е. только цифры и т.д.) или использовать обратные ссылки.
[*] если вы не используете виртуальные домены в postfix, вы также можете использовать alias_maps, но как это работает, иногда может быть непонятно, читайте https://serverfault.com/questions/644306/confused-about-alias-maps-and-virtual-alias-maps об этом
awk
поддерживает расширенные регулярные выражения POSIX(ERE ). Вы пытаетесь использовать Perl -совместимое регулярное выражение (PCRE ). В ERE нет(?<=...)
(«заглянуть -за утверждение» ).
Чтобы получить дату кодирования из ввода, рассмотрим
awk -F ':' '$1 ~ /^Encode Date/ { sub("^ ", "", $2); print $2 }' file
При этом каждая строка рассматривается как:
-поля с разделителями. Он выбирает строку, первое такое поле которой начинается со строки Encode Date
, и удаляет пробел в начале второго поля этой строки перед его печатью.
С sed
он был бы немного короче:
sed -n '/^Encode Date/s/.*: //p' file
Это находит правильную строку, затем удаляет все до и включая :
и следующий за ним пробел, и выводит измененную строку.
Или, с эквивалентной sed
операцией, которая пытается изменить каждую строку и печатает те, которые были успешно изменены,
sed -n 's/^Encode Date.*: //p' file
Если вы хотите напечатать всю строку (, как ваша последняя команда, кажется, хочет сделать ), тогда используйте
awk '/^Encode Date/' file
или,
sed -n '/^Encode Date/p' file
или,
grep '^Encode Date' file
Связанные: