2011-10-11 14 views

答えて

125

ショート定義:

grep:ファイル

#usage 
$ grep This file.txt 
Every line containing "This" 
Every line containing "This" 
Every line containing "This" 
Every line containing "This" 

$ cat file.txt 
Every line containing "This" 
Every line containing "This" 
Every line containing "That" 
Every line containing "This" 
Every line containing "This" 

awksedで特定の用語を検索すると、grepよりcompletly異なります。 awkおよびsedはテキストプロセッサです。彼らはあなたがテキストで探しているものを見つける能力を持っているだけでなく、テキストを削除したり、追加したり、変更したりする能力を持っています。

awkは、主にデータの抽出と報告に使用されます。 sedはストリームエディタです
それぞれに独自の機能と専門性があります。


セッド

$ sed -i 's/cat/dog/' file.txt 
# this will replace any occurrence of the characters 'cat' by 'dog' 

Awkの

$ awk '{print $2}' file.txt 
# this will print the second column of file.txt 

基本awk使用:
計算合計/平均/最大/最小/など。これまでに何が必要なのでしょうか?

$ cat file.txt 
A 10 
B 20 
C 60 
$ awk 'BEGIN {sum=0; count=0; OFS="\t"} {sum+=$2; count++} END {print "Average:", sum/count}' file.txt 
Average: 30 

私はあなたがこの本を読むことをお勧めします。Sed & Awk: 2nd Ed.

それはあなたが任意のUnixライクな環境に熟練したsed/awkのユーザーになるのに役立ちます。

37

Grepは、ファイル内で一致する行をすばやく検索する場合に便利です。行番号の一致、一致回数のカウント、ファイル名のリストのような他の簡単な情報も返すことができます。

Awkは、CSV形式のファイルを読み込み、レコードを処理し、オプションで結果データセットを出力するためのプログラミング言語全体です。それは多くのことを行うことができますが、単純なタスクに使うのが最も簡単なツールではありません。

Sedは、正規表現に基づいてファイルを変更する場合に便利です。これにより、行の一部を簡単に一致させたり、変更を加えたり、結果を出力したりすることができます。これはawkより表現力が劣りますが、単純なタスクではいくらか簡単に使用できます。それはあなたが使用することができるより多くの複雑な演算子を持っています(私はそれも完全なチューリングだと思う)が、一般的にそれらの機能を使用しません。

+1

Grepと同じくらい速くAWKでファイル内の行を検索できます。これは、ここで説明された最初のケ​​ースです:[grep vs awk:パターン検索の10の例(theunixschool)](http://www.theunixschool.com/2012/09/grep-vs-awk-examples-for-pattern-search。 html)。 – Hibou57

24

私はちょっと言いたいことがありますが、多くのツールがテキスト処理を行うことができます。 並べ替え、分割、分割、結合、貼り付け、貼り付け、貼り付け、貼り付け、列、回転、タック、tr、nl、pr、頭、尾.....

非常に便利ですが、

テキスト処理を学習するための怠惰な方法(最良の方法ではありません)は、grep、sed、awkだけを学習することです。この3つのツールを使用すると、テキスト処理の問題のほぼ99%を解決でき、異なるcmdsとオプションの上に覚える必要はありません。 :)

あなたが3つを学んで使用していれば、あなたはその違いを知っていました。実際のところ、違いはどのツールがどのような問題を解決するのに良いかを意味します。

もっと怠惰な方法は、スクリプト言語(python、perl、またはruby)を学習し、それを使ってすべてのテキスト処理を行うかもしれません。

+2

パターンマッチング以外の仕事の複雑さに依存します。パターンマジック以外に多くのロジックがある場合、周囲のロジックがよりシンプルなSEd/Grep/AWKなら、Pythonはより良い選択肢になります。 – Hibou57

+1

実際に、この推論の行に従えば、sedとgrepの大部分を実行できるので、awkを学んで使用することをお勧めします。 –

関連する問題