Немного магии sed Ж:-)


ramok аватар

ramok - Posted on 11 Январь 2006

Несколько забавных примеров:

$ echo metric | sed -e strictest
metes             
$ echo dated | sed -e statement
demented 
$ echo routing | sed -e stoutest
resting
$ echo face | sed -e secede
fade
$ echo ontology | sed -e sentence
oncology

Для тех кто не понял подсказка Ж:-)
SUSv3 по этому поводу:

"Any character other than backslash or can be used instead of
a slash to delimit the BRE and the replacement."

0
Ваша оценка: Ничего

Ежели охота найти все такие волшебные подстановки, то вот скрипт, который их ищет: funny_sed.sh.

При прогоне на машине, где в файле /usr/share/dict/words было 45378 слов, было найдено 656 "магических" подстановок. Большая часть из них тривиальна, но есть и забавные, например

echo cat | sed -e 'statement' gives cement

Полный список можно посмотреть тут: funny_list.txt.

вот такой вот баг в скрипте..
====
echo domesticity | sed -e 'seepage' gives
sed: -e выражение #1, символ 0: нет предыдущего регулярного выражения
====

никак немогу до конца прогнать Ж:-)
надо подумать как оптимизировать йенто дело..
--
Signature invent in progress 20% #.........

Несколько более быстрый ;) вариант программы для поиска магических слов написанный на перле здесь. Улучшенная версия на баше тут (которая все равно в 20 раз уступает перлу).

никак руки не дойдут посмотреть подробнее Ж:-\
но за новую версию спастбо Ж:-)
--
Signature invent in progress 20% #.........

странно, почему-то на вебе оказалась старая версия скрипта. слово seepage вообще не должно было тестироваться. там еще в самом начале надо заменить в grep -E '^s(.).*\1.*\1$' "$dictionary" регулярку на '^s(.).+\1.*\1$'. у меня быстро отработало, минут 15.

не сильно у меня убыстрилось.. опять до конца так и не дошло Ж:-\
--
Signature invent in progress 20% #.........

очень странно. версия на баше конечно тормозит по страшному, это правда. но перл-то должен отработать в течение минуты, ну двух максимум. На одно слово тратит у меня порядка двух секунд, а слов таких около 30.

я пока проверить не могу, сижу безлошадный перебиваюсь тут как могу..
словари похоже у меня побольше были Ж:-)
проверю как смогу..
--
Signature invent in progress 20% #.........

маньяки кто писал Ж:-)
только не везде есть grep -E

никто не в курсе есть words только с русскими словами готовый?
была идея сбецать скрпит поиска рифмы к слову Ж:-D
--
Signature invent in progress 19% #.........

да, и кстати чем не годятся словари, поставляемые скажем с aspell?

наверное потому что aspell бинарный формат и лом разбиратся
вот например теже words для украинского есть, а для русского ненашел Ж:-\
--
Signature invent in progress 20% #.........

писал ессно я. тока /me не маньяк. а grep -E у меня есть.

аа.. тогда хоть копирайты минимальные тогда оставляй, а то страна не узнает своих героев Ж:-)
на маньяка не обижайся, я по доброму Ж:-)
а насчет grep -E, я потому зацепился так как sed такое умеет \(.\).*\1 в s///

запустил досих пор работает Ж:-)

--
Signature invent in progress 20% #.........