1.1, Аноним (-), 10:37, 03/03/2012 [ответить] [﹢﹢﹢] [ · · · ]
| –10 +/– |
хорошая и нужная тулза для скриптов, но cmd | perl -e '...' уже давно привычнее
| |
|
2.3, Аноним (-), 11:43, 03/03/2012 [^] [^^] [^^^] [ответить]
| +6 +/– |
Вы, чтобы карандаш очинить, тоже мельничный жернов берете?
| |
|
3.5, Аноним (-), 11:56, 03/03/2012 [^] [^^] [^^^] [ответить]
| +/– |
Нет конечно. Гораздо чаще приходится сталкиваться с чем-то посложнее чем cmd | grep 'REX' | ... . И в таких случаях как-то быстрее и приятнее работать с perl.
| |
|
|
5.9, Аноним (-), 12:10, 03/03/2012 [^] [^^] [^^^] [ответить]
| +/– |
Нет. Есть perl в который всегда можно добавить любую логику и это не потребует сношения с grep,egrep/fgrep/sed/awk,find и, что еще хуже, смены инструментов при внезапном изменении требовании к фильтру (что кстати очень часто). На среднем уровне с coreutils я вполне спокойно работаю, но когда потенциально возможны сложности (пусть и маловероятны), то тут выбор очевиден.
| |
|
6.12, Аноним (-), 12:34, 03/03/2012 [^] [^^] [^^^] [ответить]
| –3 +/– |
> Нет. Есть perl в который всегда можно добавить любую логику и это
> не потребует сношения с grep,egrep/fgrep/sed/awk,find и, что еще хуже, смены инструментов
> при внезапном изменении требовании к фильтру (что кстати очень часто). На
> среднем уровне с coreutils я вполне спокойно работаю, но когда потенциально
> возможны сложности (пусть и маловероятны), то тут выбор очевиден.
Удивитесь еще больше. Борн/Корн/Баш - Тьюринг-полные интерпретаторы с ЛЮБОЙ логикой. Опачки?
| |
|
7.15, Аноним (-), 13:08, 03/03/2012 [^] [^^] [^^^] [ответить]
| +3 +/– |
тут мы должны обратиться к истории и попытаться разобраться в причинах побудивших к созданию perl (ранее pearl).
| |
7.34, Аноним (-), 23:32, 03/03/2012 [^] [^^] [^^^] [ответить]
| +1 +/– |
Тьюринг-полнота тут не при чем, вопрос в удобстве и лаконичности. Или вы одноразовые скрипты на чистых сях пишете? А брейнфак тоже тьюринг-полный
| |
|
|
|
|
5.10, Аноним (-), 12:12, 03/03/2012 [^] [^^] [^^^] [ответить]
| +3 +/– |
Все мы осилили (может и не в полной мере), но perl универсальнее чем каждая из утилит отдельно.
| |
|
6.11, Аноним (-), 12:32, 03/03/2012 [^] [^^] [^^^] [ответить]
| +/– |
А C/C++ еще универсальней. Кстати, питонеры с вами не согласятся. Кому-то нравится поп, кому-то попадья. А кому-то свиной хрящик.
| |
|
7.16, Аноним (-), 13:15, 03/03/2012 [^] [^^] [^^^] [ответить]
| +/– |
>А C/C++ еще универсальней
С (Си) - да, С++ - нет (хотя если программировать смешивая объектный и процедурный стили с низкоуровневыми хаками - то С++ не будет уступать Си).
>Кстати, питонеры с вами не согласятся
Не удивительно. Философия питона их учит только одной религии и призывает быть линейным, однозначным, услужливым и послушным мальчиком :).
PS: TIMTOWTDI, man !
| |
|
8.46, Аноним (-), 11:03, 05/03/2012 [^] [^^] [^^^] [ответить] | +/– | Ну в общем дешевым взаимозаменимым корпоративным ботом, по цене рубль за пачку ... текст свёрнут, показать | |
|
|
10.52, vle (ok), 13:54, 05/03/2012 [^] [^^] [^^^] [ответить] | +/– | TIMTOWTDI внутри одного ЯП приводит только к разнузданности и нарушению дисцип... текст свёрнут, показать | |
|
|
12.55, vle (ok), 15:37, 05/03/2012 [^] [^^] [^^^] [ответить] | +/– | Массовый отказ от перла с приходом новых языков произошел по вполне объективным ... текст свёрнут, показать | |
|
13.59, Аноним (-), 17:50, 05/03/2012 [^] [^^] [^^^] [ответить] | +/– | Произошел по одной причине, по которой скоро будет отказ от PHP в пользу ECMAScr... большой текст свёрнут, показать | |
|
12.56, Wulf (??), 16:26, 05/03/2012 [^] [^^] [^^^] [ответить] | +1 +/– | К сожалению, в перле TIMTOWTDI относится скорее к синтаксису, нежели чем к семан... текст свёрнут, показать | |
|
|
|
|
|
|
6.29, Аноним (-), 23:01, 03/03/2012 [^] [^^] [^^^] [ответить]
| +/– |
> Все мы осилили (может и не в полной мере), но perl универсальнее
> чем каждая из утилит отдельно.
Но утилиты всегда есть - а перловку ещё ставить придётся.
| |
|
7.51, Michael Shigorin (ok), 13:26, 05/03/2012 [^] [^^] [^^^] [ответить]
| +/– |
> Но утилиты всегда есть - а перловку ещё ставить придётся.
Перловку в большинстве виденных случаев просто так не снесёшь.
| |
|
6.30, zerot (ok), 23:01, 03/03/2012 [^] [^^] [^^^] [ответить]
| +/– |
как не гадко поддерживать анонима ... перл это вещь, также пользуюсь регулярно. но ни один из моих коллег по нескольким крупным конторам не осилил, по причине чего пришлось и мне для унификации по возможности решать через sed|awk|grep|cut etc...
-
справедливости ради перл как инструмент для обработки строк в тыщу раз универсальнее, удобнее и логичнее шеловских костылей, но на небольших задачах можно обойтись и ими. ну и да, один и тот же скрипт на костылях шела может напороться на разные ключи костылей в Linux, AIX и солярке ...
_
ИМХО
| |
|
7.40, Pisto (?), 18:07, 04/03/2012 [^] [^^] [^^^] [ответить]
| +1 +/– |
> напороться на разные ключи костылей в Linux, AIX и солярке
Есть вполне определенные стандарты для переносимого скриптинга на шелл.
| |
|
|
|
|
|
2.4, Антон (??), 11:51, 03/03/2012 [^] [^^] [^^^] [ответить]
| +1 +/– |
cmd | perl6 -e '...'
Попробуй так, бро. Так перспективнее.
| |
|
3.6, Аноним (-), 11:58, 03/03/2012 [^] [^^] [^^^] [ответить]
| +/– |
>Так перспективнее.
Не думаю. Мода на ООП головного мозга проходит. Perl (5) много ближе к Си чем 6й. Ну а полезные фичи 6ого портируются в 5й. Так что ..
| |
|
2.18, XoRe (ok), 14:26, 03/03/2012 [^] [^^] [^^^] [ответить]
| –1 +/– |
> хорошая и нужная тулза для скриптов, но cmd | perl -e
> '...' уже давно привычнее
Откройте для себя grep -P
-P, --perl-regexp
Interpret PATTERN as a Perl regular expression (PCRE, see below). This is highly experimental and grep -P may warn of unimplemented
features.
Хотя эта фича есть только в gnu grep => скрипты с ней непортабельны.
Но для личного использования - вполне.
| |
|
3.20, Аноним (-), 15:01, 03/03/2012 [^] [^^] [^^^] [ответить]
| +/– |
>Откройте для себя grep -P
Откройте для себя сообщение #9. Никакое сочетание из множества [ivGFEPf] не дает возможность быстро и безболезненно запрограммировать сложные логики. Grep годится только под простые задачи уровня линейной фильтрации - не более.
| |
|
4.21, ram_scan (?), 15:17, 03/03/2012 [^] [^^] [^^^] [ответить]
| +1 +/– |
Похоже вы и без goto тоже программу написать не умеете.
Для одноразового костыля вне зависимости от его поморочености всегда хватало bash+sed+awk+grep. Во всяком случае я на этом деле ожнажды сделал парсер детализаций телефонн6ых звонков, их нарезку на куски и последующую рассылку по списку пациентам (для чего рожал письма с аттачами и сопроводительным текстом), пока программеры в биллинге это дело фиксили. А да, команда sendmail мне понадобилась еще. Для рассылки.
Unix way. Работы заняло на два часа вместе с отладкой. Мог бы написать на перле, но лениво было трахаться.
| |
|
5.23, Аноним (-), 17:14, 03/03/2012 [^] [^^] [^^^] [ответить] | +/– | Вы ошиблись Скорее вы делаете скоропостижные выводы руководствуясь поверхностны... большой текст свёрнут, показать | |
|
|
7.27, Аноним (-), 21:16, 03/03/2012 [^] [^^] [^^^] [ответить]
| +1 +/– |
Очередной с поспешными выводами: во-первых, вы не разглядели многоточие и, во-вторых, откройте для себя опции к split.
| |
|
|
|
4.33, Аноним (-), 23:10, 03/03/2012 [^] [^^] [^^^] [ответить]
| +/– |
>Grep годится только под простые задачи уровня линейной фильтрации - не более.
А что в man grep утверждается то то обратное?
Парень ты серьёзно болен.
| |
4.36, евлампий (?), 08:45, 04/03/2012 [^] [^^] [^^^] [ответить]
| +/– |
> Откройте для себя сообщение #9. Никакое сочетание из множества [ivGFEPf] не дает
> возможность быстро и безболезненно запрограммировать сложные логики. Grep годится только
> под простые задачи уровня линейной фильтрации - не более.
А Вы для себя команду М-х grep в Емаксе не открывали? Преудобнейшая штуковина, доложу Вам.
А perl -- он конечно хорош и силен. Сам для сравнительно простых вещей обхожусь bash|awk|sed|grep|tr|cut..find да же perl -e '' (также на участках текста в емаксе M-1-M-|). Но и сбацать на awk-grep-sed в этом случае намного проще (а find в перле не хватает )
И да, perl -- является часто является зависимым пакетом на Лине (даже на фряхе).
В общем, все они друг друга дополняют.
| |
|
5.37, евлампий (?), 08:55, 04/03/2012 [^] [^^] [^^^] [ответить]
| +/– |
К сказанному:
> вещей обхожусь bash|awk|sed|grep|tr|cut..find
еще head и особенно tail хороши, sort...
| |
|
|
|
2.24, Stax (ok), 18:24, 03/03/2012 [^] [^^] [^^^] [ответить]
| +1 +/– |
Только вот perl -e намного тормознее grep на простом поиске. И это не какая-то абстракция - это реально заметно, разница в несколько раз по скорости между grep'ом и другими искалками. Например, очень часто grep находит моментально, открываешь в less, ищещь - и ждеееешь.
А причина проста - http://swtch.com/~rsc/regexp/regexp1.html
| |
|
3.25, Аноним (-), 18:42, 03/03/2012 [^] [^^] [^^^] [ответить]
| +/– |
Это очень полезная статья. Надо будет perl-сообществу показать ее, только сначала разобраться в этом.
| |
|
|
Часть нити удалена модератором |
5.49, vle (ok), 12:54, 05/03/2012 [^] [^^] [^^^] [ответить]
| +1 +/– |
> перловые регехпы - самые гибкие а не самые быстрые.
В подавляющем большинстве случаев "гибкость" перловых регекспов,
которая приводит к неизбежной экспоненте в трудоемкости, не нужна.
Вот для этих случаев перловодам и следовало бы сделать нормальную,
с точки зрения скорости работы, реализацию.
| |
|
6.63, Аноним (-), 04:29, 06/03/2012 [^] [^^] [^^^] [ответить]
| –1 +/– |
сравните результаты
time grep -h "#include.*stdio" /usr/include/{*.h,*/*.h}
time awk '/#include.*stdio/ {print}' /usr/include/{*.h,*/*.h}
time sed -n '/#include.*stdio/p' /usr/include/{*.h,*/*.h}
time perl -e '/#include.*stdio/ && print while <>' /usr/include/{*.h,*/*.h}
перл только грепу и проигрывает, и то - не фатально.
и это с учетом того, что в одиночку греп - пустое место.
| |
|
|
8.68, Аноним (-), 17:28, 06/03/2012 [^] [^^] [^^^] [ответить] | +/– | я вам дал простой негибкий пример, который не приводит к экспоненте ни в трудо... текст свёрнут, показать | |
|
9.70, vle (ok), 19:18, 06/03/2012 [^] [^^] [^^^] [ответить] | +/– | Статьи, надо понимать, не прочитаны Ясно, разговор этот бесполезен Хотя, если ... текст свёрнут, показать | |
|
|
7.69, Michael Shigorin (ok), 18:07, 06/03/2012 [^] [^^] [^^^] [ответить]
| +/– |
> сравните результаты
Забыли сперва всё cat'нуть куда-нить в /dev/null, чтоб не первая команда из замеряемых отвечала за кэш.
cat /usr/include/{*.h,*/*.h} > /dev/null 0.01s user 0.06s system 5% cpu 1.274 total
> time grep -h "#include.*stdio" /usr/include/{*.h,*/*.h}
0.01s user 0.03s system 78% cpu 0.051 total
> time awk '/#include.*stdio/ {print}' /usr/include/{*.h,*/*.h}
0.08s user 0.02s system 94% cpu 0.110 total
> time sed -n '/#include.*stdio/p' /usr/include/{*.h,*/*.h}
0.13s user 0.03s system 97% cpu 0.169 total
> time perl -e '/#include.*stdio/ && print while <>' /usr/include/{*.h,*/*.h}
0.09s user 0.03s system 91% cpu 0.131 total
> перл только грепу
...с awk...
> и проигрывает, и то - не фатально.
Угу, в два с половиной раза по ходикам на стенке при предложенных Вами условиях на ноуте под руками.
Хотя осмысленно было бы сделать серию забегов на различных массивах данных, чтобы разделить время инициализации и время собственно работы.
> и это с учетом того, что в одиночку греп - пустое место.
Для данной задачи греп как раз минимально непустое место, бишь оптимальное. При всём моём уважении к перлу.
| |
|
8.71, Аноним (-), 19:49, 06/03/2012 [^] [^^] [^^^] [ответить] | +/– | условия для всех одинаковые, так что не думаю, что это принципиально многое зави... большой текст свёрнут, показать | |
|
7.74, Andrey Mitrofanov (?), 12:00, 07/03/2012 [^] [^^] [^^^] [ответить]
| +/– |
> сравните результаты
> time grep -h "#include.*stdio" /usr/include/{*.h,*/*.h}
...а чего тут кавычки не одинарные-то?....
> time awk '/#include.*stdio/ {print}' /usr/include/{*.h,*/*.h}
> time sed -n '/#include.*stdio/p' /usr/include/{*.h,*/*.h}
awk '/.../'
sed '/.../'
> time perl -e '/#include.*stdio/ && print while <>' /usr/include/{*.h,*/*.h}
perl -ne '/.../ and print'
...
Я бы ещё предложил 'time seq 1 100| xargs -IZZZ sed ...' , чтоб значащих цифр поболе.
| |
|
|
|
4.64, arisu (ok), 05:33, 06/03/2012 [^] [^^] [^^^] [ответить]
| +/– |
> Это очень полезная статья. Надо будет perl-сообществу показать ее, только сначала разобраться
> в этом.
перл-сообщество в курсе, ему пофигу.
| |
|
|
2.47, Kodir (ok), 12:49, 05/03/2012 [^] [^^] [^^^] [ответить]
| –1 +/– |
Поддерживаю перловый тулз. Современные потребности уже намного больше, чем 'grep error'.
| |
|
1.22, Аноним (-), 15:33, 03/03/2012 [ответить] [﹢﹢﹢] [ · · · ]
| +2 +/– |
теперь что для каждой утилиты которой добавилась еще одна опция и исправлиил 1 баг будем рисовать новость?
| |
1.43, Аноним (-), 10:11, 05/03/2012 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
> размер которой не укладывается в тип INT (2 Гб (!) для 64-разрядных систем).
что, простите?
| |
|
2.44, Andrey Mitrofanov (?), 10:56, 05/03/2012 [^] [^^] [^^^] [ответить]
| +/– |
>> размер которой не укладывается в тип INT (2 Гб (!) для 64-разрядных систем).
> что, простите?
Сами в шоке:
grep no longer dumps core on lines whose lengths do not fit in 'int'.
(e.g., lines longer than 2 GiB on a typical 64-bit host).
Instead, grep either works as expected, or reports an error.
| |
|
|