Convert Line Ending/Character Encoding In-Place

ファイルの改行/文字コードを直接置換(書き換え)したい場合 nkf を利用すると簡単にできる。
例:文字コードが UTF8 で改行が Windows(CR+LF)形式のファイルを EUC-JP の LF に変換する場合

$ ls -1
foo
$ nkf --overwrite=.orig -d -We foo
$ ls -1
foo # <- EUC_JP, LF file
foo.orig

in-place 変換オプション
in-place で変換するには –in-place[=SUFFIX] OR –overwrite[=SUFFIX] オプションを利用する。元ファイルをバックアップとして残したい場合は、SUFFIX オプションも利用する。
たとえば、’–in-place=.orig’ オプションの場合、元ファイル(filename)は filename.orig としてバックアップされ、filename の中身が書き換えられる。
PREFIX は指定できない模様。

改行コードオプション

  • Unix (LF) : -Lu OR -d
  • Windows (CRLF) : -Lw OR -c
  • Mac(CR) : -Lm

文字コードオプション

  • ISO-2022-JP (7bit JIS) : j
  • Shift_JIS : s
  • EUC-JP : e
  • UTF-8N : w
  • UTF-16BE : w16

input encoding は小文字で、 output encoding は大文字で指定する
たとえば ‘-sW’ の場合 SJIS を UTF-8N に変換する

Advertisements
Tagged with: , ,
Posted in linux

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Archives
%d bloggers like this: