Отправляет email-рассылки с помощью сервиса Sendsay

vim and regexp

Приветсвую!
Вот задался вопросом как в виме по регулярным выражениям удалить строки,
где встречаются больше 4 слов
есть файлик достаточно большой и хочу удалить все строки содержащие
больше 4 слов. В vim пишу так

:g/w\{1,4}/d

но к сожелению ничего не удаляет. вроде как правильно все написал, но
результата 0

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 35914; Возраст листа: 2069; Участников: 1377
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/836820

Ответить   Tue, 24 Mar 2009 12:30:06 +0200 (#836820)

 

Ответы:

On Tuesday 24 March 2009 15:30:06 Maksim V. Kovalenko wrote:

Во первых, если логика правильная, то должно быть g/\w\{1,4\}/d
При этом он удалит всё.
Надо более 4 одинаковых подряд идущих слова, или вообще более 4 любых слов?

Ответить   Tue, 24 Mar 2009 16:17:04 +0500 (#836848)

 

вообще 4 любых слова
т.е. чтобы строк не было, где больше 4 слова

Alexey wrote:

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 35916; Возраст листа: 2069; Участников: 1377
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/836857

Ответить   Tue, 24 Mar 2009 13:54:54 +0200 (#836857)

 

On Tuesday 24 March 2009 16:54:54 Maksim V. Kovalenko wrote:

Вообще то, в vim нет понятия слово как набор сиволов. И нет метасивола для
этого. \w означает символ.
Возможно придётся воспользоваться awk, или что то в этом духе...

Ответить   Tue, 24 Mar 2009 17:40:22 +0500 (#836872)

 

Спасибо!
А вот может кто подскажет как решить этот вопрос с помощью awk or sed?

Alexey wrote:

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 35918; Возраст листа: 2069; Участников: 1377
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/836877

Ответить   Tue, 24 Mar 2009 14:55:54 +0200 (#836877)

 

Не знаю про awk и sed, но знаю Паскаль (бинарник кину в личку):

{$H+}
{$RANGECHECKS ON}
{$SMARTLINK ON}

var
s : string;
f, c : LongInt;
sstate : boolean;

begin

while not EOF do begin

ReadLn(s);

sstate := true;
c := 0;

for f := 1 to Length(s) do begin

if s[f] = ' ' then sstate := true;

if sstate and (s[f] <> ' ') then begin inc(c); sstate := false; end;

if c = 4 then break;

end; {next f}

if c < 4 then WriteLn(s);

end; {wend}

end.

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 35920; Возраст листа: 2069; Участников: 1377
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/836886

Ответить   Tue, 24 Mar 2009 16:21:40 +0300 (#836886)

 

Пардон, не заметил, что четыре включительно.

{$H+}
{$RANGECHECKS ON}
{$SMARTLINK ON}

var
s : string;
f, c : LongInt;
sstate : boolean;

begin

while not EOF do begin

ReadLn(s);

sstate := true;
c := 0;

for f := 1 to Length(s) do begin

if s[f] = ' ' then sstate := true;

if sstate and (s[f] <> ' ') then begin inc(c); sstate := false; end;

if c = 5 then break;

end; {next f}

if c < 5 then WriteLn(s);

end; {wend}

end.

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 35921; Возраст листа: 2069; Участников: 1377
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/836898

Ответить   Tue, 24 Mar 2009 16:59:13 +0300 (#836898)

 

Это все хорошо, но такое решение не совсем подходит. Мне надо это
запускать на сервере. Желательно, чтобы были стандартные линуксовые
программы
авк сед вим

Alexander wrote:

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 35922; Возраст листа: 2069; Участников: 1377
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/836943

Ответить   Tue, 24 Mar 2009 17:05:12 +0200 (#836943)

 

По-моему на паскале это из пушки по воробьям.

awk 'NF<=4' infile > outfile

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 35924; Возраст листа: 2069; Участников: 1377
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/836965

Ответить   Tue, 24 Mar 2009 18:57:32 +0300 (#836965)

 

Супер! Спасибо большое ))) То что искал )

Almih wrote:

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 35925; Возраст листа: 2070; Участников: 1375
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/837183

Ответить   Wed, 25 Mar 2009 09:37:14 +0200 (#837183)

 

Maksim V. Kovalenko wrote:

Я бы сделал так:

awk 'NF <= 4' filename

должно хватить:)

Ответить   Tue, 24 Mar 2009 17:58:21 +0300 (#836956)

 

On Tuesday 24 March 2009 16:54:54 Maksim V. Kovalenko wrote:

Вообще то, в vim нет понятия слово как набор сиволов. И нет метасивола для
этого. \w означает символ.

Ответить   Tue, 24 Mar 2009 17:39:36 +0500 (#836880)