パソコン悪戦苦闘記録

プログラミング言語「AWK」の基本(続き)

 「AWK」(オーク)というコマンドないしプログラミング言語があります。ほとんどのLinuxディストリビューションに、デフォルトで入っているコマンドです。
 これを使うと、簡易なスクリプトを組み立てるだけで、いろんなテキスト編集、加工ができます。

 先日、「AWK」の基本中の基本、AWKのイロハを記事にしました。
  2024年6月8日付けの記事です。
   こちらをご覧ください。

 今回は、ちょっとだけその続き、補足です。






 AWKは、テキストファイルを行(レコード)に分割して、上から順番に読み込んでいきます。さらにその行(レコード)をフィールドというものに分割します。フィールドとは、各行(レコード)が、スペースやタブ、カンマなどの区切り文字で分割された値のことです。

 AWKは、各レコードを自動的にフィールドに分割し、それぞれのフィールドを、$1、 $2、 $3・・・という記号に代入します。 この記号は、フィールド変数と呼ばれるものです。

 AWKのスクリプトのアクション部分に、
   '{print $2,$3,$4}'
と記述すると、2番目、3番目、4番目のフィールドの値が、スペースで区切られて表示されます。このように、printの後ろに、フィールド変数をカンマ付きで並べることにより、各値がスペースで区切って出力されます。しかも、行の末尾には改行文字が付加されます。 

 ちなみに、
   '{print $2 $3 $4}'
と、フィールド変数をスペースで区切って並べると、出力は逆にスペースで区切られることなく、連続した文字列になってしまいます。ここが、ちょっと紛らわしいところで、覚えるしかないところです。

 さらに、AWKは、現在入力行(レコード)のフィールド数を、変数「NF」(number of fields)に格納します。
 これを利用し、
  '{print $NF}'
の記述で、末尾フィールドの値が出力されます。


 前回記事の、「パターン」と「アクション」の2つで構成されるスクリプトのこと、それから今回記事の「レコード」「フィールド」のこと、これらを頭に入れれば、AWKを実地で試すことができるはずです。
 前回も書きましたが、初めて自分で試してみて、思ったとおりの結果が出ると、ちょっとした感動を味わえます。AWKを扱える環境にある方は、実地に試してみるといいかと思います。




それでは、また次の記事で
goosyun
名前:
コメント:

※文字化け等の原因になりますので顔文字の投稿はお控えください。

コメント利用規約に同意の上コメント投稿を行ってください。

 

  • Xでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

最近の「Ubuntu」カテゴリーもっと見る

最近の記事
バックナンバー
人気記事