示例(随机)文本:
[email protected]:Portuguesa-Span103
[email protected]
[email protected]:Sanchismo103
期望的输出:
[email protected]:Portuguesa-Span103
[email protected]
[email protected]:Sanchismo103
通常这是我倾向于使用的电子邮件地址正则表达式,
[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}
我希望该命令查找所有电子邮件地址并简单地将它们小写,而不管每一行的格式如何。同时仍保持该行其余部分的正常大写(除了电子邮件地址之外没有其他任何更改)。
我首选的使用工具是 bash(和相关工具),我自己目前还没有尝试过这样做,因为我不知道从哪里开始。
我正在使用 Gnu/Cygwin。
如果您使用的正则表达式总是正确的,您可以将它与 Perl 一起使用:
$&
是匹配的文本,并将\L
其后的所有内容变为小写(直到 a\E
,但此处不需要)。当您使用 GNU sed 时,您可以使用:
这会将从行首
@
到第一个的所有内容转换为小写。例如如果电子邮件地址不在每行的开头,和/或如果一行上可能有多个电子邮件地址,您将使用
\b
而不是^
将搜索和替换锚定到单词边界标记而不是开头线: