つれづれ電脳記(日くらしPCに向かひて)

つれづれなるままに、日くらしPCに向かひて、その悪戦苦闘ぶりをそこはかとなく書き付くるおじさん。たまに雑談[管理人:goosyun]

つれづれなるままに、日くらしPCに向かひて、デジタル関係の悪戦苦闘ぶりをそこはかとなく書き付くるおじさんです。
たまに雑談してます。連絡・問い合わせフォームは、ページ最下部に置いています。[著者(運営人):goosyun]

(当ブログには本文中に広告リンクが含まれています。)

AWKとVBAとで異なる比較演算子(「等しくない」の演算子)

 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}
としました。昨夜は、これで凌ぎました。この書き方でも、動くには動きます。でも、何もこんなところで仰々しく正規表現を使わなくても・・・。
 今朝になって調べてみると、bashawk において、「等しくない」を意味する比較演算子は「!=」だと分かりました。
 このように、プログラミング言語によって細かな違いがあるのは悩ましいところです。所変われば品変わるです。やはり、記憶があいまいな分野では、それぞれの言語の解説・手引書が手放せません。

 それではまた次の記事で。
   goosyun