Macはテキスト処理も強力なのです。なにせunix系ですから。
しかも、Terminalじゃなくても、Webページの入力フォーム内や、もちろんInDesignのフレームグリッド内でもperlやsed、awkを使ったテキスト編集ができてしまうのです。
もう、これだけでもWindowsを捨てて、Macにしなさいと声を大にして言えます。
InDesignだとこんな具合;
洋数字を漢数字に:置換前 |
置換後 |
これは、OS Xの「サービス」という名前のサービスを使っているのです。
「サービス」は選択部分に対して適用されます。(選択部分が何なのかによってサービスメニューの内容が変ります)
「サービス」はOS X付属のAutomator.appで作ります。
Otto君が手にしているのは他ならぬ「パイプ」です。
起動したら「新規作成」ダイアログで「サービス」を選びます。
左側にある「アクション」を右側の編集欄にドラッグして、unixのフィルタをパイプで繫いでいくように、並べていきます。
↑これは「サービス」ではなく「フォルダアクション」の例です |
ここで、「選択されたテキストを出力で置き換える」にチェックを入れるのがミソです(デフォルトではOFFになってます)。
unix流にいうと選択部分を標準入力・標準出力として扱っているのです。
なお、流れるテキストストリームは、文字コード:utf-8、改行:LF (とおもいきや、InDesignのようにCR改行のテキストを渡すものもあるようです)。
シェルには各種のshellが選べます。perl、python、pubyを直接呼び出すこともできます。
あとは、やらせたいフィルタスクリプトをここに書いて、適当な名前をつけて保存すれば、メニューバーのアプリケーションメニューやマウス右クリックでのコンテキストメニューでの「サービス」から呼び出せるようになります。
(この段階では特定のスクリプトを書かず、「汎用のフィルタ」とするのも便利です。詳しくは後日の「どこでもunixフィルタ」記事をどうぞ)
なお、自作の「サービス」は、各ユーザの「~/Library/Services/」フォルダに保存されるのですが、Lionからこのフォルダが不可視とされてしまいました。Finderのメニューバーの「移動」をOptionキーを押しながらクリックすると「ライブラリ」に移動できますが、Automatorの「開く」ダイアログには「移動」がないので、Finderのサイドバーにドラッグして登録しておくことをお薦めします。
実例:
▼ 洋数字を漢数字に書き換えるサービスならこんな具合です。shellとしてperlを使ってます。
use encoding 'utf-8'; while (<>) { y/0-9/0-9/; y/,./,./; y/0123456789/〇一二三四五六七八九/; y/,./千・/; print $_; } |
「use encoding 'utf-8'」と宣言してやれば、仮名漢字スクリプトもOKです。
export LANG=ja_JP.UTF-8 tr \\r \\n | /usr/local/bin/sed -f /Users/mt/bin/jointline.sed |
なお、OS Xネイティブのsedはutf-8をまだうまく扱えないので、GNU Sedを使う必要があります。GNU Sedはソースから、configure→make→make install で簡単にインストールできます。
また、InDesignのようにCR改行テキストを渡すものもあるので、「tr \\r \\n」で改行をLFに揃えます。
この例で呼び出している jointline.sed は2010年6月に書いた「行連結sedスクリプト」です。
:loop
$!N
s/\(.\+\)\n\([^ ]\+\)/\1\2/
t loop
P
D
は全角空白です。*改題しました。2012-03-04
0 件のコメント:
コメントを投稿