【发布时间】:2020-10-07 04:29:39
【问题描述】:
我正在尝试在 linux 上使用 sed 从电子邮件文件中提取 To 标头。
问题在于 To 标题可能位于多行上。
例如:
To: name1@mydomain.org, name2@mydomain.org,
name3@mydomain.org, name4@mydomain.org,
name5@mydomain.org
Message-ID: <46608700.369886.1549009227948@domain.org>
我尝试了以下方法:
sed -n -e '/^[Tt]o: / { N; p; }' _message_file_ |
awk '{$1=$1;printf("%s ",$0)};NR%2==0{print ""}'
sed 命令提取以 To 开头的行和下一行。 我将输出通过管道传输到 awk 以将所有内容放在一行中。
完整的命令输出在一行中:
To: name1@mydomain.org, name2@mydomain.org, name3@mydomain.org, name4@mydomain.org
我不知道如何继续测试下一行是否以空格开头并将其添加到结果中。
我想要的是所有的地址
To: name1@mydomain.org, name2@mydomain.org, name3@mydomain.org, name4@mydomain.org, name5@mydomain.org
任何帮助将不胜感激。
【问题讨论】:
-
您确实需要为此使用 procmail/formail。见tutorialspoint.com/unix_commands/procmail.htm 和tutorialspoint.com/unix_commands/formail.htm
-
@EdMorton:是的,谢谢。我是这样做的: cat _message_2 | formail -X 收件人:| awk '{$1=$1;printf("%s ",$0)};NR%2==0{print ""}'