N・K・F ! N・K・F !

Terminalウィンドウのエンコーディング設定はMac OS XならばUTF-8がデフォルト、というか他のエンコーディングだとlsが使えなくなったりするなど大変不便なのでこれ以外あり得ないと思うのですが、そうするとUTF-8エンコードされていない日本語を含むテキストファイルの内容を表示させようとすると文字化けします。こういう時はnkfを使うのが便利っぽいですね。

$ cat ./yatex.new | nkf -w
(出力は省略)

yatex.newはShift_JISエンコードされてます。-wはUTF-8で出力するというオプション。その他man nkfしてみると色んな機能があります。

日本語を扱うときはRuby等LLのお世話になることが多いためなんでもRubyスクリプト書いちゃえばいいじゃないか、という気になりますが小回りの利くツールは使い方を覚えればより効率的という例ですね。

grepで日本語検索。

$ grep -n `echo "変数" | nkf -s` ./yatex.new | nkf -w
7:	深くする桁数を制御する変数 YaTeX-tabular-indentation 新設。
10:	生成するラベル名の書式を変える変数YaTeX-ref-default-label-string新設。
17:	インデントなしの環境宣言を決める変数 YaTeX-noindent-env-regexp 新設。
27:	変数 YaTeX-dvi2-command-ext-alist 新設。Previewerコマンドと、そ
39:	変数 yahtml-html4-strict を新設。HTML4Strict準拠をできるだけ補助。
222:	変数 YaTeX-open-lines を廃止
231:	変数 YaTeX-hilit-sectioning-attenuation-rate で、セクションコマ
268:	変数 indent-line-function に YaTeX-indent-line を設定した。
297:	行うようにし、変数 user-article-table を廃止した。これにより
308:	た。また、変数 YaTeX-verbatim-environments を用意し、LaTeX コマ
362:	テンポラリ辞書を格納する変数を buffer-local に。
403:1.43:	環境のネストに応じたインデント(変数YaTeX-environment-indentで指定)。
418:	アドイン関数のmaketitle型補完への対応と、現在の補完形式を変数

ロボ風

元テキスト(test.txt)

オウバクからberberineを抽出し、berberinechlorideの結晶を得る。
$ nkf -h3 test.txt
おうばくカラberberineヲ抽出シ、berberinechlorideノ結晶ヲ得ル。

ロボ(クロノトリガー)風ですが、あっちはまるきりひらがなとカタカナが逆さまというわけではないんですよね。
でも物語において機械が言葉をしゃべる時は多用される表現です。元ネタなんなんだろう。

全角→半角

$ nkf -Z test.txt
オウバクからberberineを抽出し、berberinechlorideの結晶を得る。