Удаление пробелов для реструктуризации адреса электронной почты - PullRequest
0 голосов
/ 28 февраля 2019

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

INPUT

fistname1 lastname1 <  email@domain1.com  >
fistname2 lastname2 othername2 <  email@domain2.com  >
fistname3 lastname3 could be more than one name <  email@domain3.com  >

желаемый вывод

fistname1 lastname1 <email@domain1.com>
fistname2 lastname2 othername2 <email@domain2.com>
fistname3 lastname3 could be more than one name <email@domain3.com>

Я пробовал несколько awk, но они продолжают давать сбой.

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Попробуйте с sed s -E расширенным сопоставлением с шаблоном.Легче читать.

sed -E 's/<\s+/</; s/\s+>/>/;' file
fistname1 lastname1 <email@domain1.com>
fistname2 lastname2 othername2 <email@domain2.com>
fistname3 lastname3 could be more than one name <email@domain3.com>

Если это действительно большой файл, вы можете сэкономить немного времени, выполняя все это в одном шаблоне

sed -E 's/<\s*(\S+)\s*>/<\1>/;' file

(Кстати, я решил, чтоЯ тоже назову свои кулаки.;)

0 голосов
/ 28 февраля 2019

Используя sed, вы можете сделать это:

sed -E 's/<[[:blank:]]*([^[:blank:]]+)[[:blank:]]*>/<\1>/g' file

fistname1 lastname1 <email@domain1.com>
fistname2 lastname2 othername2 <email@domain2.com>
fistname3 lastname3 could be more than one name <email@domain3.com>

:: Подробности команды ::

Матч:

  • <: Матч <
  • [[:blank:]]*: Матч 0 или более пробелов
  • ([^[:blank:]]+): Матч 1+ непробельные символы и захват в группе # 1
  • [[:blank:]]*: совпадение 0 или более пробелов
  • >: совпадение >

Замена:

  • <\1>: заменить на обратную ссылку группы № 1, обернутую < и >
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...