我要阐述含有这样一些文本和电子邮件地址的文件列表:解析与SED
TEXT\n
Cc: mail1,\n
mail2,\n
mail3\n
EMPTY LINE\n
TEXT
我必须加载到一个bash变量抄送列表:FOO =“MAIL1, mail2,mail3“。我该如何处理sed(或其他命令)?
我要阐述含有这样一些文本和电子邮件地址的文件列表:解析与SED
TEXT\n
Cc: mail1,\n
mail2,\n
mail3\n
EMPTY LINE\n
TEXT
我必须加载到一个bash变量抄送列表:FOO =“MAIL1, mail2,mail3“。我该如何处理sed(或其他命令)?
sed
通常一次只评估一条线。你可以得到它匹配多行,但这是相当丑陋的。我建议使用Perl
代替。
FOO=`perl -e 'local $/=undef; open FILE, "input.txt"; $text=<FILE>; close FILE; print "$1, $2, $3" if $text =~ /Cc: (.*?),\n (.*?),\n (.*?)\n/s;'`
问题是我不知道我有多少地址,我只能使用空行作为“邮件的结尾”,所以我不能打印$ 1 $ 2 $ 3。不过非常感谢您的回复。 – user1633717
你应该在之前提到过。如果$ text =〜/ Cc:(。*?),\ n(。*?),\ n(。*?)\ n/s;改成'print'$ 1,$ 2,$ 3' text =〜/ Cc:(。*?(,\ n。*?)*)\ n/s){$ addr = $ 1; $ addr =〜s/\ n // g;打印$ addr;}'然后。 –
太棒了!有用!非常感谢你!! – user1633717
如果你有Procmail
安装并输入文件的格式为像例如一个RFC822电子邮件,
FOO=$(formail -c -xCc: <file)
欢迎堆栈溢出!我们鼓励你[研究你的问题](http://stackoverflow.com/questions/how-to-ask)。如果你已经[尝试了某些东西](http://whathaveyoutried.com/),请将其添加到问题中 - 如果没有,请先研究并尝试您的问题,然后再回来。 – 2012-08-29 16:03:55