使用 Name Surname 和 awk/sed 构建了一个电子邮件地址

Built an email adress using Name Surname with awk/sed

我有姓名栏。我需要使用名称建立电子邮件地址,例如

name            email
Susan Black     sblack@abc.com
maria Kramer    mkramer@abc.com

我想写一个正则表达式从第一个位置删除子字符串到 space 字符并添加“@abc.com”到结尾,然后使用 sed 将其小写。这是个好主意吗?我该如何实现?

我将使用 AWK 来实现以下方式,令 file.txt 内容为

Susan Black
maria Kramer

然后

awk '{print tolower(substr(,1,1) ) "@abc.com"}' file.txt

输出

sblack@abc.com
mkramer@abc.com

解释:从第1列的第1个位置开始得到1长的子串,与第2列拼接,使这个小写然后与@abc.comprint这样构造的字符串拼接

(在 gawk 4.2.1 中测试)

使用 sed:

sed -rn 's/(^[[:alpha:]]{1})(.*[[:space:]])(.*$)/@abc.com/;s/[[:upper:]]/\L&/gp' file

使用带有正则表达式解释(-r 或 -E)的 sed 将姓名分成三部分并打印第一部分(第一个首字母)和第三部分(姓氏),后跟“@abc.com”。然后我们搜索大写字符并使用 \L& 将它们转换为小写