2017-03-02 6 views
-1

このawkコマンドの解釈方法や読み方を理解してもらえますか?awk:以下のコマンドを解釈/読み込む方法(このコマンドのしくみ)

awk '/foo/{if (a ~ /abc/) print a; print} {a=$0}' file 

ラインを持つファイルの場合:コマンドとして出力しますことを観察

abc 0 
def 
abc 1 
foo 1 
ghi 
jkl 
foo 2 
foo 3 
mno 
abc 2 
foo 4 
foo 5` 

abc 1 
foo 1 
foo 2 
foo 3 
abc 2 
foo 4 
foo 5` 
+2

それはあなたが 'awk'チュートリアルを通して作業するための時間です。 (これは非常に基本的なもので、StackOverflowのトピックではありません)。 http://grymoire.com/Unix/Awk.htmlをチェックしてください。 http://stackoverflow.com/help/how-to-ask、http://stackoverflow.com/help/dont-ask、http://stackoverflow.com/help/mcveを読んで[ツアー]( http://stackoverflow.com/tour)よりQを投稿してください。がんばろう。 – shellter

+0

Arnold Robbins著、Effective Awk Programming、第4版を読んでください。そのスクリプトにはさらに多くのことが説明されます。その間に、6つのステートメントがあり、いくつかのステートメントを削除したり、移動したり、プリントを追加したりすることができます。 –

答えて

2

誰かがどのように理解するのに役立つてもらえこのawkを解釈/読む コマンド?要するに

awk '/foo/{if (a ~ /abc/) print a; print} {a=$0}' file 

ラインは、次に見つかった場合trueの場合、コマンドを超えているし、それはfooを含む行を検索するもの、それは、前のリード線(variable a)はabcを有するかどうかをチェックし、その後、それは前の行を印刷します(that is variable a contents; print a)を入力し、現在の行(line which contains "foo"; print)を印刷します。

次のように説明:

awk '        # call awk 
    /foo/{       # if line/record/row contains "foo" then 

       if (a ~ /abc/)  # if variable a contains "abc" then 
          print a; # print contents of variable a 
       print    # print current record/row/line 
      } 
      { 
       a=$0    # save current record/line/row in variable a 
      } 
    ' file       # here you read file 
関連する問題