删除电子邮件地址前的文字
Remove text before email address
我有成百上千行乱七八糟的行,其中包含电子邮件和其他数据。出现在电子邮件地址之前的所有内容基本上都是无用的,可以是 purged/deleted/removed/sliced - 不确定术语是否正确,抱歉。
我倾向于将 Cygwin 用于这些类型的事情,但一直在努力。这是我通常倾向于使用的电子邮件正则表达式:
[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}
输入:
Dog:email@email.com:cat
Pab:email1@hotmail.com:dog
cat:horse:email@jenga.de:cat
bike:michael:david:xenon@gmail.com:cat
inter@outlook.com:bob
期望的输出:
email@email.com:cat
email1@hotmail:dog
email@jenga.de:cat
xenon@gmail.com:cat
inter@outlook.com:bob
要删除电子邮件前的所有内容,包括冒号,
sed 's/.*:\([A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\)//' file
通常 sed
不允许没有选项的 {2,6}
所以也许你有 sed -E
或 sed -r
,在这种情况下,括号前的反斜杠可能应该被删除。
您的正则表达式工作正常:
$ awk 'match([=10=],/[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}/){print substr([=10=],RSTART,RLENGTH)}' file
email@email.com
email1@hotmail.com
email@jenga.de
xenon@gmail.com
inter@outlook.com
$ awk 'match([=10=],/[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}/){print substr([=10=],RSTART)}' file
email@email.com:cat
email1@hotmail.com:dog
email@jenga.de:cat
xenon@gmail.com:cat
inter@outlook.com:bob
由于您使用的是 cygwin,因此您拥有 GNU awk,它具有 "inplace" 可用的编辑功能:
awk -i inplace 'script' file
但当然先测试。
我有成百上千行乱七八糟的行,其中包含电子邮件和其他数据。出现在电子邮件地址之前的所有内容基本上都是无用的,可以是 purged/deleted/removed/sliced - 不确定术语是否正确,抱歉。
我倾向于将 Cygwin 用于这些类型的事情,但一直在努力。这是我通常倾向于使用的电子邮件正则表达式:
[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}
输入:
Dog:email@email.com:cat
Pab:email1@hotmail.com:dog
cat:horse:email@jenga.de:cat
bike:michael:david:xenon@gmail.com:cat
inter@outlook.com:bob
期望的输出:
email@email.com:cat
email1@hotmail:dog
email@jenga.de:cat
xenon@gmail.com:cat
inter@outlook.com:bob
要删除电子邮件前的所有内容,包括冒号,
sed 's/.*:\([A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\)//' file
通常 sed
不允许没有选项的 {2,6}
所以也许你有 sed -E
或 sed -r
,在这种情况下,括号前的反斜杠可能应该被删除。
您的正则表达式工作正常:
$ awk 'match([=10=],/[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}/){print substr([=10=],RSTART,RLENGTH)}' file
email@email.com
email1@hotmail.com
email@jenga.de
xenon@gmail.com
inter@outlook.com
$ awk 'match([=10=],/[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}/){print substr([=10=],RSTART)}' file
email@email.com:cat
email1@hotmail.com:dog
email@jenga.de:cat
xenon@gmail.com:cat
inter@outlook.com:bob
由于您使用的是 cygwin,因此您拥有 GNU awk,它具有 "inplace" 可用的编辑功能:
awk -i inplace 'script' file
但当然先测试。