Главная страница


ru.linux

 
 - RU.LINUX ---------------------------------------------------------------------
 From : Vladimir Mosgalin                    2:5030/1041.17 09 Oct 2002  08:11:39
 To : Valery Shishkov
 Subject : Re: awk-скрипт в качестве редактора
 -------------------------------------------------------------------------------- 
 
 
 On Mon, 07 Oct 2002 18:35:54 +0400, Valery Shishkov
 <Valery_Shishkov@f9.n5040.z2.fidonet.org> wrote about 'awk-скрипт в
 качестве редактора':
 
  VS> Годика 3 назад какая-то добрая душа кидала мне скрипт на awk,
  VS> который можно было вызвать в mutt/tin в качестве редактора и он
  VS> аккуратно форматировал квоты с инициалами, а потом уже звал
  VS> указанный редактор.  Hи у кого подобного чуда не осталось?
 
 Мой друг писал несколько месяцев назад:
 
 -+- cut ---
 
 > Я помню, у тебя был квоттер для писем на перле или awk, можешь
 > прислать?
 
 Лови. Только я не уверен, что с ним всё ОК. Я его не юзаю :)
 Hа stdin надо кидать письмо вместе с хеадерами.
 Имя автора берётся из первой строки (XXX YYY wrote:)
 -+- cut ---
 
 #!/usr/bin/awk -f 
 
 BEGIN  { w0 = 0; w=1000; OldQ="  " }
 /^$/  { if (head++ < 1) 
     {
    while ($0 ~ /^[ >  ]*$/ )
       getline;
    n=split ($0, S, " ");
    if (S[n] ~ /^[  ]*wrote:[   ]*$/)
    {
       for (i=1;i<n;i++ )
       {
        F=F substr(S[i],1,1);
        XCTo=XCTo S[i] " ";
       }
       printf("X-Comment-To: (%s)\n\n",
        substr(XCTo, 1, length(XCTo) - 1) );
       printf("\nПривет %s\n", S[1]);
    } else printf("X-Comment-To: (All)\n\n\nПривет All\n\n%s\n",
                   $0);
    next;
     }
   }
   { if (head < 1) 
     {
 #      gsub (/^From: NightFlash/, "From: Vyacheslav Tortsov" );
    gsub (/^Organization:.*/, "Organization: Music Is Life!" );
    gsub (/^Subject: Re:/, "Subject:" );
       print ; next
     }
   }
   { if (w0 != 0) 
    w = w0;
     else
       OldQ=Q;
   }
   { gsub (/^>/, F ">");
     n=split($0, S, ">");
     Q="";
     T="";
     for (i = 1; i < n; i++) 
     {
       if ( S[i] ~ /^[  ]*[a-zA-Z]?[a-zA-Z]?$/ )
       Q=Q ">";
    else break;
     }
     Q=S[n-1] Q;
     gsub (/[   ]*/, "", Q);
     if (Q !~ /^$/)
       Q=" " Q " ";
     #Now Q is " XX>>>> " (XX -- author of line)
     
     if ( Q != OldQ ) 
     {
       if (length(OldQ) < length(Q)) printf ("\n");
       w = length(Q);
     }
     if ( strip_LF == 0 )
     {
       w = length(Q);
    printf ("\n");
     }
     for (; i < n; i++)
       T=T S[i] ">";
     T=T S[n];
     #Now T is text without quoting
     
     n=split(T, A, " ");
     if ( n > 0) printf ("%s", Q);
     
     for (i = 1; i <= n; i++)
     {
       l=length(A[i]);
    w += l + 1;
    if (w < 72)
    {
       printf ("%s ", A[i]);
    }
    else
    {
       w=length(Q) + l;
       printf ("\n%s %s ", Q, A[i]);
    }
     }
   }
   { gsub (/^[ >   ]*$/, ""); }
 END   { printf ( "\n\n\n  -- NightFlash\n\n" )}
 -- 
 
 Vladimir
 --- slrn/0.9.7.4-asp (Linux)
  * Origin: Me organized (2:5030/1041.17)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 awk-скрипт в качестве редактора   Valery Shishkov   07 Oct 2002 18:35:54 
 Re: awk-скрипт в качестве редактора   Vladimir Mosgalin   09 Oct 2002 08:11:39 
 Re: awk-скрипт в качестве редактора   Valery Shishkov   11 Oct 2002 13:12:19 
Архивное /ru.linux/45280000070d.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional