Регистр -ex может нуждаться в настройке для полного соответствия RFC 5322, но для начала попробуйте:
awk '{match($0,"[a-zA-z0-9._%+-]+@[a-zA-z0-9._%+-]",a)}END{print a[0]}'
Предполагая наличие списка имен:
$ cat file
George Washington
Ronald Reagan
Barack Obama
Donald Trump
$ awk 'substr($1,1,1) == substr($NF,1,1)' file
Ronald Reagan
Поскольку я использую$NF
(= последнее поле )для фамилии,это будет работать хорошо, если у вас есть отчества, но с треском провалится, если у вас есть суффикс, например Jr.
или префикс, например Mr.
или Dr.
.
$ grep -E '^[[:space:]]*([[:alpha:]])[[:alpha:]]*[[:space:]]+\1' yourfile.txt
Команда grep
будет искать yourfile.txt для:
*
означает 0 или более )в начале строки, за которыми следует *
означает 0 или более ), за которыми следует +
означает 1 или более ), за которым следует \1
— это обратная -ссылка на фактическую строку, соответствующую первому выражению в скобках. Примечание :Следующая команда (, использующаябазовоевместорасширенноерегулярное выражение ), имеет тот же эффект, что и приведенная выше:
$ grep '^[[:space:]]*\([[:alpha:]]\)[[:alpha:]]*[[:space:]]\+\1' yourfile.txt
egrep '(J[a-z]+ J)' file.txt
Выход:
Джим Джонс
Джилл Джонстон