我将以这种方式详细说明一个包含一些文本和电子邮件地址的文件:
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;'`
如果您已经Procmail
安装并且输入文件被格式化为单个 RFC822 电子邮件,如示例中所示,
FOO=$(formail -c -xCc: <file)