Procmail은 소문자 기능이 있거나 유사한 기능을 갖추고 있습니까?

StackOverflow https://stackoverflow.com/questions/5996992

  •  13-11-2019
  •  | 
  •  

문제

나는 다음 (고전적인) Procmail refi피드를 사용하여 메일 링리스트 전자 메일을 잡고 목록 이름으로 폴더에 파일을 폴더로 저장합니다.

: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/
 }
.

또한 내가있는 일을하는 것으로 보이지 않는 것으로 보이지 않습니다. 그러나 지금을 보면서, 명확하게 번역은 $ 일치하는 첫 번째 발생에 대해서만 일어나고 있으며, 내 추측은 폴더 할당 라인에서 사용하기 위해 모든 것을 변경하지 않는다는 것입니다.

업데이트 # 1 : 폴더 할당 줄에서 ListID를 사용하려고하면 'Bricolage'라는 대신 'Bricolage.Project.29601.lightHouseApp'와 같은 것을 얻습니다. Bricolage '.

도움이 되었습니까?

해결책

PROCMAIL 자체는 텍스트를 다른 텍스트로 바꾸는 기능이 없습니다.tr를 통해 일치를 실행하거나 외부 프로세스를 피하고 외부 프로세스를 피하는 경우 맵핑하는 데 필요한 각 문자에 대한 규칙을 만듭니다.

LISTID=`echo "$LISTID" | tr A-Z a-z`

# or alternatively
:0D
* LISTID ?? ^A\/.*
{ LISTID="a$MATCH" }
:0D
* LISTID ?? ^B\/.*
{ LISTID="b$MATCH" }
# ... etc
.

이 문제를 최종 일치 처리와 결합했으나 명확성을 위해이를 맡을 수 있습니다.

다른 팁

Afaik Procmail 정규 표현식은 항상 대소 문자를 구분하지 않으므로 이미 아무 것도하지 않고 원하는 것을 얻을 수 있습니다.적어도 나는 그것을 항상 그런 식으로 사용했고, 나는 (3+)를 확인한 Procmail 문서가있는 모든 사이트도 그렇게 말했다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top