Regex 每行匿名发送多封电子邮件

Regex 每行匿名发送多封电子邮件,regex,windows,sed,Regex,Windows,Sed,我有一个标签分开的数据库表转储,我需要匿名这些文件中的所有电子邮件。我正在Windows服务器上使用sed。以下是一个文件的演示摘录: 101 some guy has this email: someguy@gmail.com 102 `someguy@yahoo.com` has backticks but (someguy@yahoo.com) has parens 103 <b>someother@gmail.com</b> is bold but "someot

我有一个标签分开的数据库表转储,我需要匿名这些文件中的所有电子邮件。我正在Windows服务器上使用
sed
。以下是一个文件的演示摘录:

101 some guy has this email: someguy@gmail.com
102 `someguy@yahoo.com` has backticks but (someguy@yahoo.com) has parens
103 <b>someother@gmail.com</b> is bold but "someother@gmail.com" has double quotes and {someother@gmail.com} has curly braces around it
104 'somegal@gmail.com' has single quotes
但是,虽然同一封电子邮件可以在同一行的多个列中使用,但不能在不同行的同一列中使用。(列具有唯一的约束。)在替换中插入一些随机数字失败后,我考虑将ID插入替换中,例如
anon101@anonmized.ano
。我得出以下结论:

sed -ri "s/^([0-9]+)(.*[{(=><`' \t,\"\"])([^{(=><`' \t,\"\"]+@[^={<`'@ \t,\"\"]+\.[a-zA-Z]{2,})(.*)$/\1\2anon\1@anonimized.ano\4/g" *.txt
sed-ri“s/^([0-9]+)(.[{(=>With
awk

awk '{gsub(/[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+/,"anon"$1"@anonmized.ano",$0);print >(FILENAME)}' *.txt
使用
awk

awk '{gsub(/[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+/,"anon"$1"@anonmized.ano",$0);print >(FILENAME)}' *.txt

grep-rli*.txt
在随后的文件中搜索第一个文件的名称。然后你的
grep
非常不标准。试试看:
echo 00text.txt>00text.txt
然后试试
grep-rli 00text.txt
vs
grep-rli*.txt
。在所有*.txt文件上运行
sed
的标准方法是simply
sed script*.txt
(但如果你在Windows上,各种奇怪的反常行为都有可能发生)@tripleee我将编辑我的帖子以简化它,去掉
grep
xargs
,以便澄清:我的问题是正则表达式对第一个组的引用包含ID。第三个包含电子邮件地址的组可以存在多次,尽管引用只捕获最后一次发生的情况。
grep-rli*.txt
在随后的文件中搜索第一个文件的名称。然后你的
grep
非常不标准。试试看:
echo 00text.txt>00text.txt
然后试试
grep-rli 00text.txt 00text.txt
vs
grep-rli*.txt
。在所有*.txt文件上运行
sed
的标准方法就是
sed脚本*。txt
(但如果你在Windows上,各种奇怪的反常行为都有可能发生)@tripleee我将编辑我的帖子以简化它,去掉
grep
xargs
以明确说明:我的问题是正则表达式对第一个组的引用包含ID。而包含电子邮件地址的第三个组可以存在多次,尽管引用只捕捉最后一次发生。我在哪里声明fi要更改的lenames?将awk打印输出重定向到文件本身。已编辑的答案。我在哪里声明要更改的文件名?将awk打印输出重定向到文件本身。已编辑的答案。