这是可以使用我们的多个免费在线工作站之一(例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器)在 OnWorks 免费托管服务提供商中运行的命令 grepmailp
程序:
您的姓名
grepmail - 在邮箱中搜索匹配正则表达式的邮件
概要
grepmail [--help|--version] [-abBDFhHilLmrRuvVw] [-C ]
[-j ] [-s ] [-d ]
[-X ] [-Y ]
[[-e] |-E |-f ]
商品描述
邮件 查找包含模式的邮件消息,并打印结果消息
在标准输出上。
默认情况下 邮件 在标题和正文中查找指定的模式。
当重定向到一个文件时,结果是另一个邮箱,可以依次处理
通过标准用户代理,例如 榆树,甚至用作另一个实例的输入
邮件.
至少其中之一 -E, -e, -d, -s或 -u 必须指定。 模式是可选的,如果 -d,
-s,和/或 -u 用来。 这 -e 如果没有文件名是
图案。 这 -E 选项可用于指定涉及的复杂搜索表达式
逻辑运算符。 (见下文。)
如果找不到邮箱,grepmail 首先搜索指定的目录
MAILDIR 环境变量(如果定义了),然后搜索 $HOME/mail,
$HOME/Mail 和 $HOME/Mailbox 目录。
配置 AND 争论
许多选项和参数类似于 grep 的选项和参数。
模式
要在邮件消息中搜索的模式。 可以是任何 Perl 正则表达式,但是
应该在命令行上引用以防止通配(shell 扩展)。 到
搜索多个模式,使用“(pattern1|pattern2|...)”形式。
请注意,诸如“(?>...)”之类的复杂模式特征要求您使用
支持它们的 perl。 您可以使用模式“()”来表示您不想要
匹配任何东西。 如果您想在不打印的情况下初始化缓存,这很有用
任何输出。
邮箱
邮箱必须是传统的 UNIX“/bin/mail”邮箱格式。 邮箱可能是
由 gzip 或 bzip2 压缩,在这种情况下必须安装 gunzip 或 bzip2
系统。
如果未指定邮箱,则从标准输入获取输入,可以压缩或不压缩。
当 ASCII 和二进制数据作为输入一起通过管道传输时,grepmail 的行为是未定义的。
-a
使用到达日期而不是发送日期。
-b
断言模式必须在电子邮件正文中匹配。
-B
打印正文,但只有最少的 ('From', 'From:', 'Subject:', 'Date:') 标题。
此标志可与 -H 一起使用,在这种情况下,它将仅打印短标题,而不会打印
电子邮件正文。
-C
指定缓存文件的位置。 默认值为 $HOME/.grepmail-cache。
-D
启用调试模式,打印诊断消息。
-d
日期规范必须采用以下形式:
- 像“今天”、“昨天”、“5 年 18 月 93 日”、“5 天前”、“5 周前”这样的日期,
- 或“之前”、“之后”或“之后”,后跟上述定义的日期,
- 或“之间和“, 在哪里定义如上。
简单的日期表达式将首先由 Date::Parse 解析。 如果失败,grepmail
将尝试使用 Date::Manip 解析日期,如果模块安装在
系统。 使用空模式(即 -d "") 查找没有“日期:...”行的电子邮件
标题。
没有时间的日期规范被解释为具有该时间的午夜
天(即早晨),除了“之后”和“以来”规范,它们是
解释为第二天的午夜。 例如,“今天和明天之间”
与简单的“今天”相同,并返回日期为当天的电子邮件。 (“现在”
解释为“今天”。)日期规范“5 月 XNUMX 日之后”将返回电子邮件
日期为 6 月 XNUMX 日午夜或更晚。
-E
使用逻辑运算符指定复杂的搜索表达式。 当前的语法允许
用户使用 Perl 语法指定搜索表达式。 可以使用三个值:
$email(整个电子邮件)、$email_header(只是标题)或 $email_body(只是
身体)。 搜索以“$email =~ /pattern/”的形式指定,并且多个
可以使用“&&”和“||”组合搜索用于“和”和“或”。
例如,表达式
$email_header =~ /^From: .*\@coppit.org/ && $email =~ /grepmail/i
将找到所有源自 coppit.org 的电子邮件(您必须将“@”符号转义为
一个反斜杠),并且在邮件的任何位置包含关键字“grepmail”,在任何
大写。
-E 与不兼容 -b, -h及 -e. -i, -M, -S及 -Y 还没有
已实施。
注意:搜索表达式的语法将来可能会发生变化。 特别支持
可能会添加大小、日期和其他限制。 语法也可以简化为
为了使表达式形成更容易使用(并且可能以减少
功能)。
-e
明确指定搜索模式。 这对于指定开始的模式很有用
带有“-”,否则将被解释为标志。
-f
从 FILE 获取模式,每行一个。 空文件包含零个模式,并且
因此不匹配。
-F
强制 grepmail 处理所有文件和流,就好像它们是邮箱一样。 (IE
跳过对非邮箱 ASCII 文件或看起来不像的二进制文件的检查
使用已知方案压缩。)
-h
断言模式必须在电子邮件的标题中匹配。
-H
打印匹配电子邮件的标题而不是正文。
-i
使搜索不区分大小写(类比 grep的 -i).
-j
断言电子邮件“状态:”标题必须包含给定的标志。 订单和案例是
不重要,所以使用 -j AR or -j ra 搜索已阅读的电子邮件和
回答。
-l
输出具有与表达式匹配的电子邮件的文件的名称,(类比于 grep的
-l).
-L
遵循符号链接。 (暗示 -R)
-M
导致 grepmail 忽略非文本 MIME 附件。 这消除了误报
由编码为 ASCII 附件的二进制文件产生。
-m
附加“X-Mailfolder: " 到所有电子邮件标题,指示包含哪个文件夹
匹配的电子邮件。
-n
用行号信息作为每一行的前缀。 如果指定了多个文件,则
文件名将在行号之前。 注意:当与 -m,
X-Mailfolder 标题与下一行(空白)具有相同的行号。
-q
静音模式。 禁止输出有关非邮箱文件的警告消息,
目录等
-r
生成包含与表达式匹配的电子邮件的文件名称的报告,
以及匹配电子邮件的数量。
-R
使 grepmail 递归遇到任何目录。
-s
返回与此标志指定的大小(以字节为单位)匹配的电子邮件。 请注意,这
size 包括标题的长度。
大小约束必须采用以下形式:
- 12345:匹配大小正好为 12345
- <12345, <=12345, >12345, >=12345:匹配大小小于、小于或等于,
大于或大于等于 12345
- 10000-12345:匹配大小在 10000 和 12345 之间(含)
-S
忽略签名。 签名由“--
".
-u
仅输出唯一的电子邮件,类比于 分类 -u. Grepmail 确定电子邮件的唯一性
通过消息 ID 标头。
-v
通过类比来反转搜索的意义 grep的 -v. 这导致了一组电子邮件
印刷品是那些没有印刷品的补充品 -v 开关。
-V
打印版本并退出。
-w
仅搜索包含该模式作为词组一部分的那些行。 那是,
模式的开头必须与单词的开头匹配,模式的结尾必须
匹配单词的结尾。 (请注意,开始和结束不需要为 同 单词。)
如果你熟悉 Perl 正则表达式,这个标志只是简单地在前面加上一个 "\b"
并在搜索模式之后。
-X
为签名分隔符指定正则表达式。 默认情况下,此模式是
'^-- $'。
-Y
指定指示要搜索的特定标题的模式。 搜索将
自动将跨越多行的标题视为一个长行。 这旗
暗示 -h.
在 procmail 的样式中,pattern 中的特殊字符串会被展开如下:
如果正则表达式包含“^TO:”,它将被替换为
^(((原文-)?(Resent-)?(To|Cc|Bcc)|(X-Envelope|显然(-Resent)?)-To):
它应该将所有标头与目标地址匹配。
如果正则表达式包含“^FROM_DAEMON:”,它将被替换为
(^(Mailing-List:|Precedence:.*(junk|bulk|list)|To: 多个收件人 |(((Resent-)?(From|Sender)|X-Envelope-From):|>?From )([^>]*[^(.%@a-z0-9])?(Post(ma?(st(e?r)?|n)|office)|(发送)?Mail(er)? |daemon|m(mdf|ajordomo)|n?uucp|LIST(SERV|proc)|NETSERV|o(wner|ps)|r(e(quest|sponse)|oot)|b(ounce|bs\.smtp )|echo|mirror|s(erv(ices?|er)|mtp(error)?|ystem)|A(dmin(istrator)?|MMGR|utoanswer))(([^).!:a-z0- 9][-_a-z0-9]*)?[%@>\t ][^<)]*(\(.*\).*)?)?
这应该可以捕获来自大多数守护进程的邮件。
如果正则表达式包含“^FROM_MAILER:”,它将被替换为
(^(((Resent-)?(From|Sender)|X-Envelope-From):|>?From)([^>]*[^(.%@a-z0-9])?(Post(ma(st(er)?|n)|office)|(send)?Mail(er)?|daemon|mmdf|n?uucp|ops|r(esponse|oot)|(bbs\.)?smtp(error)?|s(erv(ices?|er)|ystem)|A(dmin(istrator)?|MMGR))(([^).!:a-z0-9][-_a-z0-9]*)?[%@>\t][^<)]*(\(.*\).*)?)?$([^>]|$))
(“^FROM_DAEMON:”的精简版),它应该能捕获来自
大多数邮件程序守护进程。
因此,要搜索发往或发自“Andy”的所有电子邮件:
grepmail -Y '(^TO:|^From:)' 安迪邮箱
- 帮帮我
打印帮助消息总结用法。
--
以下所有参数 -- 被视为邮件文件夹。
示例
计算电子邮件的数量。 (“.”匹配每封电子邮件。)
grepmail -r 。 发送邮件
获取有关书籍的 2000 到 3000 字节之间的所有电子邮件
grepmail book -s 2000-3000 已发送邮件
获取您昨天寄出的所有电子邮件
grepmail -d 昨天发送的邮件
获取您在 1998 年 XNUMX 月的第一个星期四之前寄出的所有电子邮件,这些电子邮件与
研究(需要 Date::Manip):
grepmail research -d “1 年 1998 月第一个星期四之前”发送邮件
获取您在 1998 年 XNUMX 月 XNUMX 日之前邮寄的所有与研究相关的电子邮件:
grepmail research -d "before 6/1/98" sent-mail
获取自 8 年 20 月 98 日以来收到的所有与研究或工作无关的电子邮件,忽略
案件:
grepmail -iv "(research|job)" -d "since 8/20/98" 保存的邮件
获取有关 mime 的所有电子邮件,但不获取有关 Netscape 的电子邮件。 限制搜索以匹配正文,
因为大多数标题都包含文本“mime”:
grepmail -b mime 保存邮件 | grepmail Netscape -v
打印包含来自 Rodney 的消息的所有邮箱的列表。 将搜索限制为
标题,因为引用的电子邮件可能与模式匹配:
grepmail -hl "^From.*Rodney" 保存的邮件*
在标题和正文中查找所有带有文本“Pilot”的电子邮件:
grepmail -hb "Pilot" 保存的邮件*
打印所有已保存邮件邮箱中有关 grepmail 的邮件数量的计数:
grepmail -br grepmail 保存的邮件*
从邮箱中删除任何重复项:
grepmail -u 保存的邮件
将 Gnus 邮箱转换为 mbox 格式:
邮件。 gnus-mailbox-dir/* > mbox
搜索所有发往或发自某个地址的电子邮件(考虑包装的标题和
不同的标题名称):
grepmail -Y '(^TO:|^From:)' [电子邮件保护] 已保存邮件
查找来自邮局局长的所有电子邮件:
grepmail -Y '^FROM_MAILER:' 。 已保存邮件
使用 onworks.net 服务在线使用 grepmailp