2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

パッケージ版 nkf の注意点

Posted at

CentOSのパッケージ版のnkfで複数ファイルの改行コードを確認した場合に、
始めに選択されたファイルの改行コードになってしまう。

#確認環境

# cat /etc/redhat-release
CentOS release 6.8 (Final)

nkfファイル

# ll /usr/bin/nkf /usr/local/bin/nkf
-rwxr-xr-x 1 root root 221448 11月 12 21:13 2010 /usr/bin/nkf			<=パッケージ版
-rwxr-xr-x 1 root root 506327  6月 21 16:25 2016 /usr/local/bin/nkf	<=ソース版

パッケージ版バージョン

# /usr/bin/nkf -V
Network Kanji Filter Version 2.0.8 (2007-07-20)
Copyright (C) 1987, FUJITSU LTD. (I.Ichikawa),2000 S. Kono, COW
Copyright (C) 2002-2007 Kono, Furukawa, Naruse, mastodon
# rpm -qf /usr/bin/nkf
nkf-2.0.8b-6.2.el6.x86_64

ソース版バージョン

# /usr/local/bin/nkf -V
Summary of my nkf 2.1.4 (2015-12-12) configuration:
  Compile-time options:
    Compiled at:                 Jun 21 2016 16:25:37
    Default output encoding:     LOCALE (UTF-8)
    Default output end of line:  LF
    Decode MIME encoded string:  ON
    Convert JIS X 0201 Katakana: ON
    --help, --version output:    STDOUT

適当に改行コードを変えてテストファイルを作成

# ll
合計 12
-rw-r--r-- 1 root root  5  6月 21 15:16 2016 CR.txt
-rw-r--r-- 1 root root 14  6月 21 15:17 2016 CRLF.txt
-rw-r--r-- 1 root root  5  6月 21 15:16 2016 LF.txt

cat の -Aオプションで見るとこんな感じ

# cat -A CR.txt
a^Mb^Mc
# cat -A CRLF.txt
hoge^M$
foo^M$
bar
# cat -A LF.txt
1$
2$
3

#ソース版動作

ソース版だと短縮の-g ではなく--guessでないと改行コード表示してくれないが、
正しく改行コードを表示してくれる

# /usr/local/bin/nkf --guess CR.txt CRLF.txt LF.txt
CR.txt: ASCII (CR)
CRLF.txt: ASCII (CRLF)
LF.txt: ASCII (LF)
# nkf -g CR.txt  CRLF.txt  LF.txt
CR.txt: ASCII
CRLF.txt: ASCII
LF.txt: ASCII

#パッケージ版動作
最初に指定したファイルの改行コードが表示される。
また、CRLFもCRで判定されてる

# /usr/bin/nkf -g CR.txt CRLF.txt LF.txt
CR.txt:ASCII (CR)
CRLF.txt:ASCII (CR)
LF.txt:ASCII (CR)
# /usr/bin/nkf -g LF.txt CR.txt CRLF.txt
LF.txt:ASCII (LF)
CR.txt:ASCII (LF)
CRLF.txt:ASCII (LF)
# /usr/bin/nkf -g CRLF.txt LF.txt CR.txt
CRLF.txt:ASCII (CR)
LF.txt:ASCII (CR)
CR.txt:ASCII (CR)

1つずつ指定すると、CRLF以外は一応判定してくれる

# /usr/bin/nkf -g CR.txt
ASCII (CR)
# /usr/bin/nkf -g CRLF.txt
ASCII (CR)
# /usr/bin/nkf -g LF.txt
ASCII (LF)

CentOSのパッケージ版のnkfで複数ファイルの改行コードを確認するときは注意!!
CentOS7では標準のレポジトリからは消えたっっぽいけど。

2
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?