Каковы различия между Perl, Python, AWK и sed?

просто хотите узнать, в чем главные различия между ними? и сила каждого языка (где лучше использовать его).

Изменить: это не "против" как тема, просто информация.

5 Solutions collect form web for “Каковы различия между Perl, Python, AWK и sed?”

В порядке появления языки – sed , awk , perl , python .

Программа sed является редактором потоков и предназначена для применения действий от скрипта к каждой строке (или, в более общем смысле, к указанным диапазонам строк) входного файла или файлов. Его язык основан на ed , редакторе Unix, и хотя он имеет условные обозначения и т. Д., Для сложных задач сложно работать. Вы можете воздействовать на него с небольшими чудесами – но ценой на волосы на голове. Тем не менее, это, вероятно, самая быстрая программа при попытке выполнить задачи в рамках ее мандата. (У него есть наименее мощные регулярные выражения обсуждаемых программ – адекватные для многих целей, но, конечно же, не PCRE – Perl-совместимые регулярные выражения)

Программа awk (имя из инициалов ее авторов – Aho, Weinberger и Kernighan) – инструмент, первоначально предназначенный для форматирования отчетов. Его можно использовать в качестве супа; в его более поздних версиях, это вычислительно завершено. Он использует интересную идею – программа основана на «сопоставленных шаблонах» и «действиях, предпринятых при совпадении шаблона». Шаблоны довольно мощные (расширенные регулярные выражения). Язык действий аналогичен C. Одной из ключевых особенностей awk является то, что он автоматически разбивает входные строки на поля.

Perl был написан частично как awk-killer и sed-killer. Две из предоставленных программ – это a2p и s2p для преобразования awk скриптов и скриптов sed в Perl. Perl является одним из самых ранних из следующего поколения языков сценариев (Tcl / Tk, вероятно, может претендовать на первенство). Он имеет мощную интегрированную регулярную обработку выражений с гораздо более мощным языком. Он обеспечивает доступ практически ко всем системным вызовам и имеет расширяемость модулей CPAN. (Ни awk ни sed не расширяются). Один из девизов Perl – «TMTOWTDI – есть более чем один способ сделать это» (произносится как «tim-toady»). Perl имеет «объекты», но это скорее дополнение, чем фундаментальная часть языка.

Питон был написан последним и, вероятно, частично как реакция на Perl. В нем есть интересные синтаксические идеи (отступы для обозначения уровней – без брекетов или эквивалентов). Он более объектно ориентирован, чем Perl; он такой же расширяемый, как Perl.

Хорошо – когда использовать каждый?

  • sed – когда вам нужно сделать простые текстовые преобразования на файлах.
  • awk – когда вам нужно простое форматирование и обобщение или преобразование данных.
  • perl – практически для любой задачи, но особенно когда задача требует сложных регулярных выражений.
  • python – для тех же задач, которые вы могли бы использовать Perl for.

Я не знаю ничего, что Perl может сделать, что Python не может, и наоборот. Выбор между ними будет зависеть от других факторов. Я изучил Perl, прежде чем появился Python, поэтому я стараюсь использовать его. Python имеет меньший усиленный синтаксис и, как правило, несколько проще изучить. Perl 6, когда он станет доступен, станет увлекательным развитием.

(Обратите внимание, что «обзоры» Perl и Python, в частности, являются крайне неполными, целые книги могут быть написаны на эту тему.)

После освоения нескольких десятков языков вы устали от таких людей, как С. Лотт (см. Его спорный ответ на этот вопрос, почти наполовину меньше голосов (+ 45 / -22) через шесть лет после ответа).

Sed – лучший инструмент для чрезвычайно простых конвейеров командной строки. В руках мастера sed он подходит для одноразовых произвольных сложностей, но не должен использоваться в производственном коде, за исключением очень простых подстановочных конвейеров. Такие вещи, как 's / this / that /.'

Gawk (GNU awk) на сегодняшний день является лучшим выбором для сложного переформатирования данных, когда имеется только один источник входного сигнала и один вывод (или несколько последовательных записей). Так как большая часть реальной работы соответствует этому описанию, и хороший программист может научиться gawk через два часа, это лучший выбор. На этой планете проще и быстрее!

Perl или Python намного лучше, чем любая версия awk или sed, когда у вас очень сложные сценарии ввода-вывода. Чем сложнее проблема, тем лучше вы используете python, с точки зрения обслуживания и удобочитаемости. Обратите внимание, однако, что хороший программист может писать читаемый код на любом языке, а плохой программист может писать недостижимое дерьмо на любом полезном языке, поэтому выбор perl или python можно смело оставить в предпочтении программиста, если указанный программист квалифицированным и умным.

Во-первых, в списке «Perl, Python awk и sed» есть две несвязанные вещи.

Thing 1 – упрощенные инструменты обработки текста.

  • СЕПГ. Он имеет фиксированную, относительно простую область работы, определяемую идеей чтения и изучения каждой строки файла. sed не предназначен для того, чтобы быть особенно читаемым. Он разработан, чтобы быть очень маленьким и очень эффективным на очень маленьких серверах unix.

  • AWK. Он имеет несколько менее фиксированный, менее простой объем работы. Однако основной цикл awk-программы определяется неявным чтением строк исходного файла.

Это не «полные» языки программирования. Хотя вы можете – с некоторой работой – писать довольно сложные программы в awk, он быстро становится сложным и трудным для чтения.

Вещь 2 – языки программирования общего назначения. Они имеют богатое разнообразие типов операторов, множество встроенных структур данных и не связаны с проводными предположениями или ярлыками.

  • Perl.

  • Python.

Когда их использовать.

  • СЕПГ. Никогда. Это действительно не имеет значения в современную эпоху компьютеров с более чем 32 КБ памяти. Perl или Python делают то же самое более четко.

  • AWK. Никогда. Как и sed, он отражает более раннюю эпоху вычислений. Вместо того, чтобы поддерживать этот язык (в дополнение ко всем другим, необходимым для успешной системы), более приятно делать все на одном приятном языке.

  • Perl. Любая проблема программирования любого рода. Если вам нравится свободно мыслящий синтаксис, где есть много, много способов сделать то же самое, perl – это весело.

  • Python. Любая проблема программирования любого рода. Если вам нравится довольно ограниченный синтаксис, где меньше вариантов, меньше тонкости и (возможно) большей ясности. Объектно-ориентированный характер Python делает его более подходящим для больших сложных проблем.

Предыстория. Я не избиваю sed и awk из-за незнания. Я узнал awk более 20 лет назад. Много ли было с ним; используется для обучения в качестве основного навыка unix. Я узнал о Perl около 15 лет назад. С ним много сложных вещей. Я оставил оба, потому что я могу делать то же самое в Python – и это проще и понятнее.

Существуют две серьезные проблемы с sed и awk, ни один из которых не является их возрастом.

  1. Незавершенность их реализации. Все sed и awk можно сделать в Python или Perl, часто более просто, а иногда и быстрее. Контейнер с оболочкой имеет некоторые преимущества в производительности благодаря своей многопроцессорной обработке. Python предлагает модуль subprocess который позволит мне восстановить эти преимущества.

  2. Необходимость изучения еще одного языка. Выполняя все действия на Python (или Perl), ваша реализация зависит от меньшего количества языков, что приводит к увеличению ясности.

Я бы не назвал sed полноценным языком программирования, это редактор потоков с языковыми конструкциями, предназначенный для программного редактирования текстовых файлов.

Awk – это немного больше языка общего назначения, но он все же лучше всего подходит для обработки текста.

Perl и Python являются полноценными языками программирования общего назначения. Perl имеет свои корни в обработке текста и имеет множество awk-подобных конструкций (в сети есть даже скрипт awk-per-perl). Есть много различий между Perl и Python, ваш лучший выбор – это, вероятно, прочитать резюме обоих языков на чем-то вроде Википедии, чтобы получить хорошее представление о том, что они собой представляют.

Когда их использовать: awk – never – S. Lott.

Я думаю, что С. Лотт слегка упустил эту рекомендацию. Дело в том, что в Linux и других средах UNIX awk – полезный инструмент для использования с bash, sh и ksh для быстрых текстовых обработок. Сама идея создания сценариев – это решение вашей проблемы путем склеивания этого инструмента, этого инструмента. Следовательно, в сценариях администратора обычно есть ls, grep, |, awk, time, ps и т. Д. Каждый из них – это инструмент, который скриптер сочетает в себе как кирпичик за кирпичом, чтобы завершить строительство (чтобы решить проблему под рукой) ,

Например, я член команды команды, управляющей оборудованием для пейнтбола, дотком. Этот сайт электронной коммерции основан на стеке LAMP. Для автоматизированной обработки и нормализации передачи данных от различных поставщиков в базовую базу данных мы используем и поддерживаем разнообразное сочетание сценариев, включая bash, perl, php и даже ожидаем. Каждый из них имеет свои преимущества на основе доступных модулей и API. В сценариях bash мы выполняем быстрые шаблоны и соответствующие действия по шаблонам при необходимости с помощью awk без необходимости переключения на PERL. Одна вещь, которую я также хотел бы отметить, которая не была подчеркнута в потоке, заключается в том, что справедливое количество этих скриптов было куплено или получено из открытого источника. Если скрипт появился как Perl, мы поддерживаем его как Perl; если скрипт пришел как Php, мы поддерживаем его как Php; если он пришел как bash, мы поддерживаем его как bash; мы не переписываем его на другом языке только потому, что считаем, что он менее эффективен на языке оригинала.

  • Как сказать python не интерпретировать хеш-символ как комментарий?
  • Удаление дубликатов PCR из файла Fastq, содержащего уникальные молекулярные идентификаторы
  • Найти и заменить все между двумя заполнителями содержимым переменной
  • Правильный способ избежать вызова подпроцесса в python
  • Несоответствие между регулярными выражениями sed и python
  • Регулярное выражение - заменить все пробелы в начале строки на периоды
  • Использовать имя папки в виде столбца в текстовом файле
  • разбивать большую текстовую (xyz) базу данных на x равных частей
  • Python - лучший язык программирования в мире.