7

ここ数日とその前に、私はとについて質問してきsedましawkた。これは、私がawkの質問をすると、人々がsedを使用すると言うとき、そして私がsedの質問をするとき、人々がawkを使用すると言うときはいつでも起こります。

誰かが私がそれぞれを使用できる場所についていくつかの例を教えてもらえますか?

私にとっては、awk置換なしのプレゼンテーションとレポートsedに使用され、何かを置換する必要がある場合に使用されました。

awkしかし、それでも多くの人が私に、印刷物を使って置換が行われる例を教えてくれました。

今、私はそのユースケースが何であるか本当に混乱しています。

例として。仮定する

C ++のソースコードファイルがあり、add特定のパターンの前にコードを作成したいと思います。

何を使うべきsedawk。パターンは複数の行にまたがることもできます

4

1 に答える 1

10

コメント内のリンクは非常に価値があります。sed/awkの使用感からいくつかの行を追加します。

私は、多くのテキスト処理タスクがsedとawkの両方で実行できることを強調します。以下のテキストは私の個人的な気持ちです。

  • テキスト処理を行い、一時ファイルを生成せずに元のファイルに書き戻したい場合は、sedが優先されます。

  • 私はsedのアドレスが好きです、それはコードをかなり短くすることができます。例3,6{s/a/b/}1~2{s/f/b/}または3~5{s/f/b/}

  • 一致した部分を外部コマンド/プログラムに渡したい場合は、awkはsed(Gnu sed)よりも簡単です。楽しんでsedを試してみたい場合は、ゲームをプレイできます。テキストを一致させ、パーツ(\ 1、\ 2など)を別のsedに渡します。つまり、sedのネストです。3回後、私は迷子になります... :)

  • テキストが何らかの形で「列」ベースの場合、99%の場合、awkはあなたを失望させません。

  • 複数のファイルで異なるテキスト処理を実行したい場合は、awkを選択します。たとえば、{001-003}.txtさまざまな置換要件。

  • awkは、複数ファイル間の結合のような処理に適しています

  • ロジックにif-else、forループ、while、数値計算などの構造が必要な場合は、awkを使用します。多くの場合sedすることができますが、同様に仕事をします。

  • sedとawkはどちらもPerl正規表現をサポートしていません。それは残念だ。

  • つまり、基本的に、awkはsedよりも柔軟でわかりやすいと思います。タスクが比較的単純な場合、またはよく知られている魔法のsedソリューションがある場合(http://sed.sourceforge.net/sed1line.txtを確認してください。多くの魔法のワンライナーがあります)、sedを使用します。そうでなければ、私は最初にawkだと思います。

sedとawkはどちらも非常に強力なテキスト処理ツールであり、linux / unixボックス、comm、cut、join、paste、sort、uniqには多くのテキスト処理ツールがあります...それらには多くのオプションパラメーターがあります。私は怠惰で、それらすべてを思い出すことができません。それらの一般的に使用されるものだけです。しかし、awk、sed、grepの操作方法を知っている場合。Linuxで90%のテキスト処理を行うことができます。awk、sed、grepでうまくいかない場合は、プログラミング言語を使用します。例:Python。

ええと、私はPerlの人ではありません。

忘れたものはありますか?

私の2セント、それが役立つことを願っています。

于 2013-01-09T10:13:36.963 に答える