質問: sedなんですが... perlのことでなくて済みません、が、sedのこととも共通している のではないかと思い、質問させていただきます。 windowsnt4.0で、アスキーのms-dos softwaretoolsに入っていた sedを今まで使っていましたが、長いファイル名が使えないので sed32に切り替えようとしていますが、エスケープ文字を判断し てくれないようで困っています。 以下に実行例を示します。 c:\temp\call>sed32 -v gnu sed version 3.02 + multi-byte extension 1.07 copyright (c) 1998 free software foundation, inc. this is free software; see the source for copying conditions. there is no warranty; not even for merchantability or fitness for a particular purpose, to the extent permitted by law. c:\temp\call>sed32.exe -e"s/\t/tab/g" e2.txt > e2.out e2.txtの内容 ------------------------------------------- select swk_dendate "計上日付", swk_denno "伝票番号", swk_mcn_code "資産code", '' "資産名", nvl(swk_gyotek,swk_tek) "摘要", ------------------------------------------- e2.outの内容 ------------------------------------------- selectab swk_dendate "計上日付", swk_denno "伝票番号", swk_mcn_code "資産code", '' "資産名", nvl(swk_gyotek,swk_tek) "摘要", ------------------------------------------- タブを"tab"に置換せずに、"select"の"t"が"tab"に置換されています。 しばらくこの手のtoolを使っていなかったので、よく分からない のですが、どこか使い方が間違っているのでしょうか? それとも、gnu sedの仕様なのでしょうか? softwaretoolsでは問題ありませんでした。
回答: ご質問にあるsedは使っていませんが...。 sedの種類によって"\t"が使えるのもと使えないものがあるみたいですね。(オリジナルのsedでは使えなかったと思うので、使えるのもののほうが「拡張」されているといえると思います。) この場合は、スクリプト中に本当のタブコードを入れるのが本来の方法だと思います。(\tを入れるところで本当にtabキーを押す。) 最後に参考までに、perlが入っていれば、 perl -pe "s/\t/tab/" e2.txt で同様のことができます。こちらの"\t"は問題なく使えるはずです。