(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Linux】nkfにて全角英数を半角英数にする

スポンサーリンク

実施方法

-Zオプションを利用する。

$ echo "AIXというOS" | nkf -Z
AIXというOS

上記のように「AIX」という全角が「AIX」という半角になっています。

環境情報
$ nkf --version
Network Kanji Filter Version 2.1.5 (2018-12-15)
Copyright (C) 1987, FUJITSU LTD. (I.Ichikawa).
Copyright (C) 1996-2018, The nkf Project.

補足

テキストファイルからキーワードにて検索をかける際に全角と半角の表記ゆれによって正しく検出できない場合があります。

そういった場合にnkfのZオプションを利用すれば

$ echo "1A" | nkf -Z
1A

上のように変換されます。

Z, Z0
Convert X0208 alphabet to ASCII.

ちなみに
表記揺れとしては大文字小文字もあります。

$ cat a.txt
HelloWorld
HelloWorld

$ file a.txt
a.txt: UTF-8 Unicode text

例えばそのまま「hello」という部分を抽出しようとしても

$ cat a.txt | grep hello

引っかかりません。

検索条件を「大文字小文字」の差を検索条件に含めないgrep -iを利用することで

$ cat a.txt | grep -i hello
HelloWorld

一行目のみが引っかかります。

そして冒頭のnkfも利用すれば全角英数も拾えます。

$ cat a.txt | nkf -Z | grep -i hello
HelloWorld
HelloWorld

以上、表記揺れ対策にご利用ください。