drBatty писал(а): ↑30.11.2010 02:21
у sed всего штук 30-40 команд (из которых 80% почти никогда не применяется). А сколько команд в вашем любимом языке? (да, в С их немного. за то over9000 совершенно необходимых функций, без которых даже helloworld не написать). Что до форматирования, то убрав форматирование, можно сделать нечитаемым код на любом языке. Но если это не пайтон, то работать он всё равно будет.
При уборке форматирования perl не обязательно станет нечитаемым. При уборке форматирование любой сколько-нибудь сложный скрипт на sed станет нечитаемым.
Предложения надо читать до конца. Ваш скрипт ничего никуда не распихивает, поэтому он хуже работает.
Не понял. Это вы про shell pipe?
Понял. Ваш скрипт тут не при чём, просто я показываю преимущества использования «серьёзного» языка программирования против кучи узко специализированных утилит. Вообщем-то, такой спор начинается каждый раз, когда тут пишут скрипт на sed/awk/tcl(expect), за исключением тех случаев, когда тема была закрыта до того, как я её увидел («закрыта» в разговорном смысле, а не закрыта модератором).
drBatty писал(а): ↑30.11.2010 02:21Код: Выделить всё
BEGIN{%f=qw(Кукушка coocoo Чайник teapot)}/^\s*!\s*(.*)/and open F,'>',(($f{$1})?($f{$1}):($1)).".rc"and next;print F $_ if*F;
Код: Выделить всё
sed -n '/^!/{n;:l;/\n$/{s///p;q};${p;q};N;bl}'
мой гольф лучше вашего
Да ну? Ваш гольф не распихивает ничего по файлам, поэтому сравнение некорректно. Согласен, что написать что-то с тем же функционалом, но на perl и короче у меня не получится (лучший результат: /^!/?($,=1,$_=""):$,?/^$/&&last:undef$_: на два символа длиннее), но вы уж лучше добавьте распихивание по файлам и тогда посмотрим.
Кстати, откуда вы взяли условие пустой строки? В исходном сообщении требовались линии, начинающиеся с пробела. У меня это выразиться в замене трёх символов: /^$/&&last → /^ /||last.