我的文件数据如下
bill johnson
robert dylan
neil o'bryan
要求是提取姓氏并添加@mail.com。我使用了下面的命令
cut -d"|" -f2 emp.lst | sed 's/\([a-z][a-z]*\) \([a-z][a-z]*\)/\[email protected]/'
-- Cut 命令从文件中获取第二个字段(全名) -- Sed 将名字和姓氏分开,并将电子邮件分配给姓氏
除了名称之外一切正常neil o'bryan
,下面是我得到的结果
请帮助我如何按预期获得带有单引号的名称。即奥'[电子邮件受保护]
答案1
假设应该o'brian
在obrian
电子邮件地址中,只需tr
在管道中添加一个阶段即可删除不需要的字符:
cut -d "|" -f2 emp.lst |
tr -d "'" |
sed 's/\([a-z][a-z]*\) \([a-z][a-z]*\)/\[email protected]/'
您可以对要删除的任何其他字符执行相同的操作,或转换为其他字符,例如
cut -d "|" -f2 emp.lst |
tr -d "'" |
tr 'åäöé' 'aaoe' |
sed 's/\([a-z][a-z]*\) \([a-z][a-z]*\)/\[email protected]/'
如果地址应该是(带有撇号),只需将其添加到正则表达式中:o'[email protected]
cut -d "|" -f2 emp.lst |
sed "s/\([a-z][a-z]*\) \([a-z]['a-z]*\)/\[email protected]/"