【发布时间】:2011-05-13 19:44:59
【问题描述】:
我正在使用以下(经典)procmail 配方来捕获邮件列表电子邮件并按列表名称将它们归档到文件夹中:
:0
* ^((List-Id|X-(Mailing-)?List):(.*[<]\/[^>]*))
{
LISTID=$MATCH
:0
* LISTID ?? ^\/[^@\.]*
Lists/$MATCH/
}
问题是:如果列表名称从全小写变为 Firstlettercap,我最终会得到两个文件夹,一个用于“listname”,另一个用于“Listname”。
我想在最终交付规则中使用 $MATCH 变量之前将其小写,但我无法找到对 lc() 函数的引用或可用于执行的正则表达式/替换这个。
下面的一条评论建议这样做:
:0
* ^((List-Id|X-(Mailing-)?List):(.*[<]\/[^>]*))
{
LISTID=`echo "$MATCH" | tr A-Z a-z`
:0
* LISTID ?? ^\/[^@\.]*
.Lists.$MATCH/
}
这似乎也不符合我的要求。不过,现在看,很明显,音译只发生在第一次出现 $MATCH 时,我的猜测是它根本没有改变它以便在文件夹分配行中使用。
更新 #1:如果我尝试在文件夹分配行中使用 LISTID,我会得到类似“Bricolage.project.29601.lighthouseapp”之类的内容,而不仅仅是“Bricolage”或者——我所追求的——只是“拼凑”。
【问题讨论】:
标签: procmail