[解決済み】Perl、Python、AWK、sedの違いは何ですか?[クローズド]
質問
それぞれの主な違いは何ですか?また、どのような典型的なシナリオでそれぞれの言語を使うのがよいのでしょうか?
どのように解決するのですか?
登場する言語の順番は
sed
,
awk
,
perl
,
python
.
は
sed
はストリームエディタで、入力ファイルの各行(またはより一般的には、指定された範囲の行)にスクリプトからのアクションを適用するように設計されています。その言語は
ed
Unixのエディタである "Container "は、条件分岐などがありますが、複雑な作業はしにくいです。ちょっとした奇跡を起こすことはできますが、その代償は頭髪に及びます。しかし、その範囲内のタスクを実行する場合には、おそらくこのプログラムの中で最も速いでしょう。(今回取り上げたプログラムの中で、最も強力でない正規表現を持っています。多くの目的には十分ですが、PCRE (Perl-Compatible Regular Expressions)ではないことは確かです)。
その
awk
プログラム(名前は作者であるAho、Weinberger、Kernighanの頭文字から)は、当初はレポートの書式設定のためのツールであった。このプログラムは
sed
最近のバージョンでは、計算機的に完全なものとなっています。このプログラムは、「マッチしたパターン」と「パターンにマッチしたときの動作」を基本としている。パターンはかなり強力なものである(拡張正規表現)。アクションのための言語はCに似ている。
awk
は、入力を自動的にレコードに分割し、各レコードをフィールドに分割することである。
Perlはawk-killerとsed-killerとして書かれた部分がある。一緒に提供されているプログラムのうち二つは
a2p
と
s2p
を変換するためのものです。
awk
スクリプトと
sed
スクリプトを Perl に変換します。Perlは次世代のスクリプト言語の中で最も早く登場した言語の一つである(Tcl/Tkがおそらく第一人者であると主張できる)。Perlは次世代スクリプト言語の草分け的存在である。ほとんどすべてのシステムコールにアクセスでき、CPANモジュールの拡張性を備えています。(どちらも
awk
も
sed
は拡張可能です)。Perlのモットーの1つに「TMTOWTDI - There's more than one way to do it"」(発音は「ティムトーディー」)があります。Perlにも「オブジェクト」はありますが、言語の基本的な部分というよりは、アドオンのようなものです。
Pythonは最後に書かれたもので、おそらくPerlへの反動もあったのでしょう。Pythonには面白い構文のアイデアがあります(レベルを示すインデント-中括弧や同等のものはない)。PythonはPerlよりも基本的にオブジェクト指向ですが、Perlと同じように拡張可能です。
OK - それぞれをどのような場面で使うか?
- Sed - ファイルに対して単純なテキスト変換を行う必要がある場合。
- Awk - データの簡単な書式設定や要約、変換だけが必要な場合。
- Perl - ほぼすべてのタスクに対応。特に複雑な正規表現が必要なタスクに適しています。
- Python - Perlと同じようなタスクに使用できます。
PerlにできてPythonにできないことはありませんし、その逆もまた然りです。2つのうちどちらを選ぶかは、他の要素に依存すると思います。私はPythonができる前にPerlを学んだので、Perlを使うことが多いですね。Pythonは構文が複雑でなく、一般的に学ぶのが簡単です。Perl 6が利用可能になれば、魅力的な展開になるでしょうね。
(特にPerlとPythonの「概要」は非常に不完全で、このテーマで一冊の本が書けるほどです)。
関連
-
python string splicing.join()とsplitting.split()の説明
-
[解決済み】終了コード -1073741515 (0xC0000135)でプロセス終了)
-
[解決済み】Python: OverflowError: 数学の範囲エラー
-
[解決済み] urllib、urllib2、urllib3、requestsモジュールの違いは何ですか?
-
[解決済み] Pythonのリストメソッドであるappendとextendの違いは何ですか?
-
[解決済み] 文字列が数値(float)であるかどうかを確認するにはどうすればよいですか?
-
[解決済み] Pythonの「名前付きタプル」とは何ですか?
-
[解決済み】__str__と__repr__の違いは何ですか?
-
[解決済み】type()とisinstance()の違いは何ですか?)
-
[解決済み】Python2のdict.items()とdict.iteritems()の違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Python カメの描画コマンドとその例
-
Python入門 openを使ったファイルの読み書きの方法
-
Pythonショートビデオクローラーチュートリアル
-
[解決済み】numpyの配列連結。"ValueError:すべての入力配列は同じ次元数でなければならない"
-
[解決済み】「SyntaxError.Syntax」は何ですか?Missing parentheses in call to 'print'」はPythonでどういう意味ですか?
-
[解決済み】インポートエラー。モジュール名 urllib2 がない
-
[解決済み】 AttributeError("'str' object has no attribute 'read'")
-
[解決済み】Python Error: "ValueError: need more than 1 value to unpack" (バリューエラー:解凍に1つ以上の値が必要です
-
[解決済み】NameError: 名前 'self' が定義されていません。
-
[解決済み] grep、awk、sedの違いは何ですか?重複] [重複