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

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

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

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

awk正規表現の日本語対応

 

 

1 awkの勉強

 Linux等でのファイル暗号化ツールGnuPG(gpg)が手に入った(2025年9月15日付け記事をご覧ください。)こともあって、データ抽出に利用しようと、プログラミング言語awk(オーク)の勉強をしました。
 その中で、思いどおりに動作してくれない場面があったので、他の方の参考なるかもしれないと思い、記録に残しておきます。

Ubuntu Linuxデスクトップ

2 自習用のテキストファイル

 自習用に、以下のようなテキストファイルを作りました。ファイル名はdata.txtとしました。

1 鬼滅の刃 きめつのやいば kimetu
2 進撃の巨人 しんげきのきょじん singeki
3 名探偵コナン めいたんていこなん meitantei
4 東京卍リベンジャーズ とうきょうまんじりべんじゃーず tokyo
5 ワンピース わんぴーす wanpisu
6 怪獣8号 かいじゅうはちごう kaiju

3 正規表現を使ったコマンド

 必要データを取り出すため、正規表現を使って、次の【1】【2】のコマンドを実行しました。ピリオド「.」は、任意の一文字にマッチする正規表現のメタ文字です。
  【1】awk '$4 ~ /meit.ntei/' data.txt
  【2】awk '$3 ~ /めい.んてい/' data.txt
 【1】は成功して、3番め「名探偵コナン」の行を取り出すことができます。
 ところが、【2】は失敗し、反応がありません。

4 コマンド実行に失敗する原因

 あれこれと、苦悩した挙句、分からないので生成AIのGeminiに尋ねてみました。
 Geminiの回答は、「awkが日本語などマルチバイト文字の正規表現に対応していない」というものでした。詳しくはわかりませんが、そういうことらしいです*1
 一般的な(初心者向け)Linux教科書の中には、探した限りでは、その辺の解説は出てきません。多くの方が出くわす場面と思われ、解説されていてもよさそうですが。

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

*1:2025年9月21日追記:awk正規表現の日本語対応の方法が見つかりました。次の記事です。

goosyun.hatenablog.jp