5

awkでは実行できないバッチptovesにsedを使用しました。awkはそれをやったでしょうか?それとも、それは選択の問題であり、awkとsedの使用法に相当するものを呼び出します。どちらも、i/oと同様の一般的な検索置換を行います。一方ではできないこと、もう一方ではできないことの良い例はありますか?

4

5 に答える 5

9

主な違いの1つは、awkプログラムが状態を維持でき、同じデータに対して複数のパスを使用して動作できることです。sed(Stream EDitor)は本質的にストリーム指向であるため、sedの呼び出しは必然的にステートレスシングルパスです。ただし、これによりsedがより簡単になり、パイプチェーンでの使用に適したものになるという利点があります。

于 2009-08-30T10:34:28.950 に答える
7

オリジナルの(そして今でも最高の)本、AWKプログラミング言語では、以下が実装されています(他の多くのものの中でも):

  • 単純なアセンブラ
  • 再帰下降コンパイラ
  • テキスト索引プログラム

sedでそれをやってみてください。

于 2009-08-30T10:37:50.707 に答える
3

G'day、

Awkはより強力です。sedは、できることをより制限される傾向があります。

Sedは、データの行ベースの変更に適しています。いくつかの単純なループ構造、通常のed / ex / vi regexpのものと置換のもの、複合ステートメント、決定などがあります。ほとんどの人は、パイプされたデータを変更するためにそれを使用します。

Awkは、データのフィルタリングまたは再配置に適しています。これは主にレポートに使用されます。

Dale Doughertyの優れた本「sed&awk」(Amazonのサニタイズリンク)をご覧になることをお勧めします。ところで、そこにも正規表現の最も良い説明の1つがあります。

とにかく多くの人がPerlを使うと言うでしょう!(-:

編集: awkの「k」がBrian Kernighanを表すことを考えると、awk言語はかなりCのようであると言うのを忘れましたが、これは当然のことです。はい。あのブライアン・カーニハン!

また、sedはデータストリームでのみ機能しますが、awkはデータストリームとファイルの両方で機能します。

HTH

乾杯、Sedはデータストリームでのみ機能しますが、awkはデータストリームとファイルの両方で機能します。

于 2009-08-30T10:33:01.527 に答える
3

私が考えることができる唯一のことは、sedはawkの文字数を減らすことでほとんど変更を加えることができないということです。したがって、ライブシェルをすばやく調整するには、入力する方が高速です。

于 2009-08-30T12:01:52.610 に答える
2

SEDはストリームエディタであるため、変数やAWKのような他のいくつかの構造はありません。AWKは本格的な言語です。

于 2009-08-30T10:27:42.863 に答える