1

私は procmail を初めて使用し、構文を理解するのに苦労しています。

私がしたいのは、件名行をチェックして、3 つの大文字とそれに続くコロンで始まるかどうかを確認することです。

件名: ABC: 件名の他の部分

:0
* $ ^Subject:/^[A-Z]{3}:$/
| /usr/bin/zarafa-dagent -C -P 'Support\\$1' vmail

まず、正規表現が正しいかどうかわかりません。次に、多くのグーグル検索にもかかわらず、検索を変数に保存して他の場所で使用する方法がわかりません。最初に返された変数に $1 を試しましたが、そうではありません動作するように見えます。

どんな助けでも大歓迎です。

4

2 に答える 2

2

の値を後処理$MATCHして、コロンをトリミングできます。

:0 D
* ^Subject:[^   ]*\/[A-Z][A-Z][A-Z]:
{
    :0
    * MATCH ?? ^^\/[A-Z][A-Z][A-Z]
    | /usr/bin/zarafa-dagent -C -P "Support\\$MATCH" vmail
}

最初の条件は、3 つの大文字とコロンを にキャプチャしますMATCH。2 番目は、この値を 3 つの大文字と照合し、その部分だけを の新しい値に取り込みますMATCH

いつものように、後の角かっこ内の空白Subject:は、スペースとタブで構成されます。

于 2014-04-10T07:59:43.193 に答える
-1

OK、これを解決しました。procmail には独自のバージョンの正規表現があります。

:0 D
* ^Subject:.*\/([A-Z]+[A-Z]+[A-Z]):
| /usr/bin/zarafa-dagent -C -P "Support\\$MATCH" vmail
EXITCODE=$?

イテレータ ブラケット [AZ]{3} をサポートしていないため、式を繰り返す必要があります。

また、大文字と小文字が区別されないため、「D」フラグを追加する必要があります。

問題は、最後からコロン : を削除できないように見えることです。

于 2014-04-08T13:50:14.720 に答える