|
|
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) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/45280000070d.html, оценка из 5, голосов 10
|