Ubuntu(ウブントゥ) PCに、住所録テキストファイルを保存しています。そして、awk(オーク)コマンド(・・・プログラミング言語AWK)を使って、そのファイルの中から、必要とするデータをいつでも取り出せます。
住所録には氏名の読み仮名(ひらがら)の入力項目があるから、その氏名読みを使って人の検索をします。具体的には、awkのパターンで読み仮名データを照合し、部分一致によって対象の人がピックアップされ、該当のデータ(住所、電話番号、メールアドレス等)を取り出しています。
そのように、awkのパターン部分が条件分岐の役割を果たすことから、awkにおいて「if文」を書くことって、ほぼないだろうと考えていました。

けど、awkでもif文が必要な場合は、やはりあるもんですね。というのは、住所録データにおいては、配偶者フィールドにデータが入っている人と、入っていない人がいるから、配偶者データが登録されているときだけprintアクションが必要となったのです。その場合にはやはり、アクション内にif文を記述することになります。
第4フィールドに配偶者データがあるとするならば、
{if($4 != "") print "【配偶者】"$4}
とすればよいわけです。
ところで、昨夜(2026年1月13日)、そのawkスクリプトを作るに当たって、ちょっとつまづくことがありました。
「一致しない」「等しくない」を意味する比較演算子として、「!=」と書くべきところを、「<>」と記述してしまったのです。
{if($4 <> "") print "【配偶者】"$4}
という記述です。
そうです、これはVBAにおける書き方です。Excel VBA や Word VBA では、等しくないの演算子として「<>」を使います。けれども、「<>」では、awkスクリプトは動作しません。
昨夜はどう修正すべきかが分からなかったので、仕方なく正規表現を使って、
{if($4 ~ /.+/) print "【配偶者】"$4}
としました。昨夜は、これで凌ぎました。この書き方でも、動くには動きます。でも、何もこんなところで仰々しく正規表現を使わなくても・・・。
今朝になって調べてみると、bash や awk において、「等しくない」を意味する比較演算子は「!=」だと分かりました。
このように、プログラミング言語によって細かな違いがあるのは悩ましいところです。所変われば品変わるです。やはり、記憶があいまいな分野では、それぞれの言語の解説・手引書が手放せません。
それではまた次の記事で。
goosyun
