】コマンド(基本編その3)——テキストの加工とパターン処理・BEGIN・ENDとAWKスクリプト本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、テキストのパターン処理を行う「awk(gawk)」コマンドです。本連載では、Linuxの基本的なコマンドについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、テキストのパターン処理を行う「awk(gawk)」コマンドです。連載第115回、第116回に続き、awkの基本的な使い方を説明します。「BEGIN」は前処理、「END」は後処理awk用のファイルを作成するアクションの中で複数の処理を行うスクリプトとして実行するにはawk(オーク)コマンドとは?「awk」は空白などで区切られたテキストを処理するコマンドです。演算機能もあり、プログラミング言語としても使用されています。7の場合、awkは/usr/bin/gawkへのシンボリックリンクとなっています。Brennan氏による「mawk」が収録されています(awkは/etc/alternatives/awkへの、/etc/alternatives/awkは/usr/bin/mawkへのシンボリックリンク)。バリエーションなどが拡張されています。変数を定義する※gawk(GNU版awk)の場合、長いオプションも使用可能。program-file、-Fは--field-separator、-vは--assign。gawkにはこの他にも多数のオプションがある。意味ARGC引数の個数ARGV引数(配列)ENVIRON環境変数を収めた連想配列。{アクション}」で処理を指定します。パターンに合致したらアクションを実行する、という意味です。-lで、5番目のフィールド(サイズが表示されるフィールド)が100000以上であった場合に出力する」という意味になります(画面1、連載第115回)。{アクション}」で指定します。{アクション}」で指定します。以下のコマンドは、ファイルに行番号を付けて出力し、最後に「(××行)」と処理した行数を出力します。}」で行番号を数えるための変数「i」をゼロに設定しています。}」では、iを1増やして出力し、続いて$0で行全体を出力しています。print部分の書き方は第118回、「++i」のような演算については第119回で取り上げます。}」で「(××行)」部分を出力しています。コマンドラインで実行すると画面2のようになります。ここでは、/etc/shellsの内容を行番号付きで出力しています。コマンドラインでの入力を簡略化するために空白を省いています。ファイル名」と実行できます。コマンドラインで実行する場合のように無理に1行にまとめる必要はありません。先ほどのコマンドラインで書いた内容は、次のようにさまざまな書き方ができます。例1は1行にまとめたもの、例2は処理ごとに1行ずつ書いたものです。例3では「{」や「}」と処理内容を分けて書いています。"行)"}画面3では、例3のスタイルで書いたファイルを実行しています。処理内容は画面2と同じ目次に戻るアクションの中で複数の処理を行うアクション部分、つまり「{」と「}」の間には、複数処理を書くことができます。この場合は例3のような書き方が便利です。$0」の2つの処理に分けるならば以下のように書きます。#以降はコメントです。i,$0}なお、コマンドラインなどで、1行に複数の処理を書きたい場合は「;」で区切ります。例1の書き方の応用です。-f」と書くことで、「AWKスクリプト」として単独実行できます。-f」を追加しています。行番号部分を3桁で出力するように指定しました。printfについては第118回で扱います。#行番号部分は3桁で出力。printf("(%d行)\n",i)}「chmod」コマンド(第14回)で実行可能属性を付けると、スクリプト名を入力するだけで実行できるようになります(画面4)※)。※カレントディレクトリに作成したスクリプトを実行するときの方法については、「"応用力"をつけるためのLinux再入門」第8回も参考にしてください。めぐみ)PC-9801NからのDOSユーザー。toolsを経てLinuxへ。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『はじめてでもわかるSQLとデータ設計』『シェルの基本テクニック』など。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。