Awkシリーズの最初から第12回までずっと、Awkの小さなコマンドやプログラムをコマンドラインとシェルスクリプトでそれぞれ書いてきました。

しかし、Awk は Shell と同様にインタープリタ型言語であり、したがって、このシリーズの最初から歩いてきたすべてのことで、Awk の実行可能なスクリプトを書くことができるようになりました。

シェルスクリプトの書き方と同じように、Awkスクリプトは次の行で始まります。

#! /path/to/awk/utility -f 

例えば、私のシステムでは、Awk ユーティリティは /usr/bin/awk にありますので、次のように Awk スクリプトを開始します:

#! /usr/bin/awk -f 

上の行を説明します。

  1. #! – Shebangと呼ばれ、スクリプト内の命令のインタープリタを指定します
  2. /usr/bin/awk – インタープリタです
  3. -f – インタープリタのオプションです。 プログラムファイルの読み込みに使用されます

それでは、Awk実行可能スクリプトの例を見ていきましょう。 お気に入りのエディタで次のように新しいファイルを開きます:

$ vi script.awk

そして、次のコードをファイルに貼り付けます:

#!/usr/bin/awk -f BEGIN { printf "%s\n","Writing my first Awk executable script!" }

ファイルを保存して終了し、次のコマンドを発行してスクリプトを実行可能にします。

$ chmod +x script.awk

その後、実行してみましょう:

$ ./script.awk
サンプル出力
Writing my first Awk executable script!

批判的なプログラマーは、「コメントはどこにあるの?”と疑問に思うかもしれませんが、Awkスクリプトにコメントを入れることもできます。

コードにコメントを書くことは、常に良いプログラミングの習慣です。

コードを見ている他のプログラマーが、スクリプトやプログラム ファイルの各セクションで何を達成しようとしているのかを理解するのに役立ちます。 アカウントファイルの/etc/passwdからaaronkilikというシステムユーザーを検索し、ユーザー名、ユーザーID、ユーザーGIDを表示する例を以下に示します。

#! /usr/bin/awk -f #use BEGIN sepecial character to set FS built-in variableBEGIN { FS=":" }#search for username: aaronkilik and print account details /aaronkilik/ { print "Username :",$1,"User ID :",$3,"User GID :",$4 }

ファイルを保存して終了し、スクリプトを実行可能にして以下のように実行します。

$ chmod +x second.awk$ ./second.awk /etc/passwd
サンプル出力
Username : aaronkilik User ID : 1000 User GID : 1000

最後の例では、do while文を使用して0~10までの数字を出力してみます。awk.

#! /usr/bin/awk -f #printing from 0-10 using a do while statement #do while statement BEGIN {#initialize a counterx=0do { print x; x+=1;}while(x<=10)}

ファイルを保存した後、先ほどと同様にスクリプトを実行可能にします。

$ chmod +x do.awk$ ./do.awk
Sample Output
012345678910

Summary

この興味深い Awk シリーズも終わりに近づいてきましたが、Awk プログラミング言語の入門編として、全 13 回のパートから多くのことを学んでいただけたと思います。

最初に述べたように、Awk は完全なテキスト処理言語です。そのため、環境変数、配列、関数 (組み込み & ユーザー定義) など、Awk プログラミング言語の他の側面をさらに学ぶことができます。

Awk プログラミングには、学び、習得すべき部分がまだまだありますので、以下に、Awk プログラミングのスキルを高めるために使用できる重要なオンライン リソースへのリンクをいくつか示します。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です