регулярное выражение: Найти имя и фамилию, начинающиеся с одной и той же буквы

Регистр -ex может нуждаться в настройке для полного соответствия RFC 5322, но для начала попробуйте:

awk '{match($0,"[a-zA-z0-9._%+-]+@[a-zA-z0-9._%+-]",a)}END{print a[0]}'
0
25.09.2019, 10:56
3 ответа

Предполагая наличие списка имен:

$ 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..

1
28.01.2020, 02:39
$ grep -E '^[[:space:]]*([[:alpha:]])[[:alpha:]]*[[:space:]]+\1' yourfile.txt

Команда grepбудет искать yourfile.txt для:

  1. Любое количество пробелов(*означает 0 или более )в начале строки, за которыми следует
  2. Ровно один буквенный символ, за которым следует
  3. Любое количество буквенных символов(*означает 0 или более ), за которыми следует
  4. Хотя бы один пробел(+означает 1 или более ), за которым следует
  5. Символ, совпавший на шаге 2. Здесь \1— это обратная -ссылка на фактическую строку, соответствующую первому выражению в скобках.

Примечание :Следующая команда (, использующаябазовоевместорасширенноерегулярное выражение ), имеет тот же эффект, что и приведенная выше:

$ grep '^[[:space:]]*\([[:alpha:]]\)[[:alpha:]]*[[:space:]]\+\1' yourfile.txt
2
28.01.2020, 02:39
egrep '(J[a-z]+ J)' file.txt

Выход:

Джим Джонс

Джилл Джонстон

-2
28.01.2020, 02:39

Теги

Похожие вопросы