日刊アスキー Linux Top ASCII24 News ASCII24 Review ASCII24 Business Center 携帯24 Mac24 Akiba2GO! 日刊アスキー Linux デジタル用語辞典 ASCII24 Broadband Center ニュース 今日のコラム イベント情報 セミナー情報 Linux magazine ASCII24メールサービス アスキー編集会議
ASCII24 - [Main Menu] [Menu 2]
  ASCII24 > 日刊アスキー Linux > All ASCII Linux Issue 1
111
記事/用語/ID検索 

Linux Magazineの最新記事一覧

Biz Express Focus 『HDE Mail Filter 1.0』 (2003年7月8日)
Biz Express Focus “Ready for e-business” (2002年6月7日)
これで解決! Linux 100の疑問―その3 (2001年9月6日)
これで解決! Linux 100の疑問―その2 (2001年8月27日)
これで解決! Linux 100の疑問―その1 (2001年8月24日)
覚えておきたい必須コマンド30―その6・vi、最初の一歩 (2001年7月13日)
覚えておきたい必須コマンド30―その5・シェルを使おう (2001年6月27日)
覚えておきたい必須コマンド30―その4・コマンドリファレンス (2001年6月18日)
覚えておきたい必須コマンド30―その3・管理コマンド (2001年6月12日)
覚えておきたい必須コマンド30―その2・便利なコマンド (2001年6月9日)
覚えておきたい必須コマンド30―その1・ファイルの基本操作 (2001年5月31日)
初めてでも大丈夫!今日から使える Linux (第3部) (2001年5月25日)
初めてでも大丈夫!今日から使える Linux (第2部) (2001年5月21日)
初めてでも大丈夫!今日から使える Linux (第1部) (2001年5月14日)






Contact Information

[PR]
Printable Version All ASCII Linux Issue / Linux Magazine 2000年5月号

覚えておきたい必須コマンド30―その2・便利なコマンド

知っているとオペレーションが100倍便利になる各種のコマンドを覚えよう


2001年6月9日

漢字コードと改行コードの変換

テキストファイルに使われる漢字コードは、現在、EUC、シフトJIS、JISコードが代表的だ。ネットワークなどによって、異機種間でのファイルのやりとりが多くなると、すべてのファイルの漢字コードを統一するのは難しい。

lessやjvim、muleなどは、使われている漢字コードを自動的に認識し、変換して表示してくれる。しかし、すべてのプログラムがそうなっているわけではない。特に、sedやAWK、Perlなどでフィルタ処理するときには、漢字コードの違いによって、処理結果が異なってくるので注意が必要だ。

漢字コードの変換プログラムには、いくつかあるが、nkfコマンドがよく使われる。nkfが便利なのは、入力ファイルの漢字コードを自動認識してくれることだ。出力コードは、EUC(e)、シフトJIS(s)、JIS(j)を指定できる(かっこ内は指定するときのオプション)。たとえば、


USER$ nkf -e infile

とするとinfileの内容をEUCコードに変換して標準出力に出力する(画面に表示する)。

nkfは漢字コードは変換してくれるけれど、改行コードは変換してくれない。改行コードを変換する方法もいろいろあるが、今回はtrを使ってみよう。


USER$ nkf -s infile | tr \\n \\r

とすれば、UNIXの改行コード(\n)をMacintoshの改行コード(\r)に変換する。MS-DOSの改行コード(\r\n)に変換するには、


USER$ nkf -e infile | tr \\n \\r\\n

のようにする。バックスラッシュを重ねているのは、シェルに特殊文字だと解釈されないようにするためである。次のように引用符で囲んでもよい。


USER$ nkf -e infile | tr '\n' '\r\n'

なお、trコマンドの入力は標準入力だけである。したがって、nkfやcatを用いて、trにデータを渡すか、リダイレクトする必要がある。

Column コマンドラインでの一括処理

変換するファイルがいくつもあるときは、シェルの機能を使って、一気に変換すると便利だ。たとえば、bashの場合は、次のようにする。>のプロンプトはfor文の続きを入力するためのプロンプトである。


USER$ mkdir sjis
USER$ for f in *.doc ; do
> nkf -s $f > sjis/$f
> done

もし、カレントディレクトリにa.doc、b.doc、c.docというファイルがあれば、


nkf -s a.doc > sjis/a.doc
nkf -s b.doc > sjis/b.doc
nkf -s b.doc > sjis/c.doc

をしたことと同じになる。


(中野 賢)


[前ページ][次ページ]

Contents...



Copyright (C) 1997-2006 ASCII Corporation. All Rights Reserved.
No portion of this web site may be reproduced or duplicated without the express written permission of ASCII Corporation.
This web site is written in Japanese only.
記事に関するご意見やご質問は、お問い合わせフォームにてお送りください