2
3

More than 3 years have passed since last update.

nkfコマンドでファイルの文字コードと改行コードを統一する

Last updated at Posted at 2021-04-28

nkfは「Network Kanji Filter」の略であり、文字コードと改行コードを変換するコマンドです。
異なるOS(WindowsやLinux)でファイルを共有するときの問題を解決します。

今回はLinux上でnkfコマンドを利用して、文字コードと改行コード以下に統一します。

  • 文字コード: UTF-8(BOMなし)
  • 改行コード: LF(Unix系)

nkfコマンドのインストール

以下のコマンドでnkfをインストールできます。

# CentOS7
sudo yum install -y nkf

# CentOS8
sudo dnf install -y --enablerepo=PowerTools nkf

# ubuntu
sudo apt install -y nkf

ファイル変換

以下のテキストファイルを変換します。

test.txt
test

あえて、文字コードはUTF-8(BOMあり)で改行コードはCRLF(Windows系)にしてあります。

cat -e test.txtで確認すると、BOMが入っていることと改行コードがCRLFになっていることを確認できます。

$ cat -e test.txt
M-oM-;M-?test^M$

M-oM-;M-?はBOMであり、^M$は改行コードのCRLFです。(^MがCR、$がLF)

文字コードの変換

まずは文字コードをUTF-8(BOMなし)に変換します。-wオプションで変換ができます。

$ nkf -w test.txt
test^M$

改行コードの変換

次に改行コードをLFに変換します。-dオプションで変換できます。

$ nkf -d test.txt
M-oM-;M-?test$

まとめ

もちろんオプションを併用することもできるので、一括で変換する場合は以下になります。

--overwriteオプションを指定すると、指定ファイルが上書きされます。
オプションがない(デフォルト)だと標準出力に結果が出力されます。

$ nkf -wd --overwrite test.txt
$ cat -e test.txt
test$

Reference

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3