Perl、Python、AWK、sed の違いは何ですか? [closed] 質問する

Perl、Python、AWK、sed の違いは何ですか? [closed] 質問する

それらの主な違いは何ですか? また、どのような典型的なシナリオで各言語を使用するのがよいでしょうか?

ベストアンサー1

言語は、出現順にsed、、、、awkですperlpython

このsedプログラムはストリーム エディタであり、スクリプトからのアクションを入力ファイルの各行 (または、より一般的には、指定された行範囲) に適用するように設計されています。このプログラムの言語はedUnix エディタの に基づいており、条件文などがあるものの、複雑なタスクを扱うのは困難です。このプログラムを使えばちょっとした奇跡を起こすことはできますが、その代償は大きいです。ただし、このプログラムは、その権限の範囲内でタスクを実行する場合、おそらく最も高速です。(このプログラムの正規表現は、ここで取り上げたプログラムの中で最も強力ではありません。多くの目的には適していますが、PCRE (Perl 互換正規表現) には明らかに適していません)

プログラムawk(作者の頭文字である Aho、Weinberger、および Kernighan に由来) は、当初はレポートの書式設定用のツールでした。 を強化版として使用することもできます。sed最近のバージョンでは、計算が完全になっています。 は興味深いアイデアを採用しています。プログラムは、「一致するパターン」と「パターンが一致したときに実行されるアクション」に基づいています。パターンはかなり強力です (拡張正規表現)。アクションの言語は C に似ています。 の主な機能の 1 つは、awk入力を自動的にレコードに分割し、各レコードをフィールドに分割することです。

Perl は、awk キラーと sed キラーとして部分的に作成されました。Perl に付属する 2 つのプログラムはa2p、スクリプトとスクリプトを Perl にs2p変換する とです。Perl は、次世代のスクリプト言語の最も初期のものの 1 つです (Tcl/Tk がおそらく優位に立つでしょう)。Perl は、はるかに強力な言語で強力な統合正規表現処理を備えています。ほぼすべてのシステム コールにアクセスでき、CPAN モジュールの拡張性を備えています (どちらも拡張可能ではありません)。Perl のモットーの 1 つは、「TMTOWTDI - 実行方法は 1 つ以上あります」(「ティム トアディ」と発音) です。Perl には「オブジェクト」がありますが、これは言語の基本的な部分というよりはアドオンです。awksedawksed

Python は最後に書かれましたが、おそらく部分的には Perl への反応として書かれました。Python には興味深い構文上のアイデアがあります (レベルを示すためにインデントします。中括弧や同等のものは使用しません)。Python は Perl よりも根本的にオブジェクト指向であり、Perl と同様に拡張可能です。

わかりました。それぞれいつ使用すればいいのでしょうか?

  • Sed - ファイルに対して簡単なテキスト変換を行う必要がある場合。
  • Awk - データの単純なフォーマットと要約または変換のみが必要な場合。
  • Perl - ほぼすべてのタスクに使用できますが、特にタスクに複雑な正規表現が必要な場合に便利です。
  • Python - Perl を使用できるのと同じタスクに使用します。

Perl でできて Python でできないことは、私にはわかりません。その逆も同様です。この 2 つから選択するかどうかは、他の要因によって決まります。私は Python が登場する前から Perl を学習していたので、Perl を使う傾向があります。Python は構文があまり固定されておらず、一般的に学習が比較的簡単です。Perl 6 がリリースされれば、魅力的な開発となるでしょう。

(特に、Perl と Python の「概要」はひどく不完全であることに注意してください。このトピックについては、本が 1 冊書けるほどです。)

おすすめ記事