2008年03月13日
川俣晶の縁側ソフトウェアその他開発日誌total 4008 count

NT版UNIX-like toolsのtrコマンドでダブルクオートや円記号を置換する方法

Written By: 川俣 晶連絡先

 悩ましい質問が来て調査したので、結果をメモしておきます。

お断り §

 本文中で円記号として表記している文字は本文中でバックスラッシュ記号として表示されているかもしれません。しかし、両者は同一の文字です。COPY&PASTEして動作するように、見た目上も円記号になるようにU+00A5(¥)という文字を使って記述はしていません。

問題 §

 NT版UNIX-like toolsのtrコマンドは標準入力に含まれる特定の文字を別の文字に置換することができます。

 置換する文字は、コマンドライン引数で指定します。(ただし拡張された引数展開機能があるので、間接的な指定はあり)

 このとき、ダブルクオートや円記号を直接記述できない問題があります。

 ここで、拡張された引数展開機能に含まれる「次の1文字をエスケープしてありのままの文字として扱う」という'文字を使用し、tr '" Xやtr '/ Xというコマンドは正常に動作しません。引数解析アルゴリズムの関係上、前者は"によるエスケープの解釈と絡まって誤動作し、後者は記述された円記号が更にエスケープの起動トリガとして認識されるため、円記号とは解釈されません。

解決 §

 これらの特殊文字は、円記号によるエスケープ+8進コードを使って記述することで指定できます。これが最も安全な指定方法だと思われるので、これを暫定的に推奨しておきます。

  • ダブルクオートの置換 tr \042 X
  • 円記号の置換 tr \134 X

感想 §

 他人の書いたコード、それも効率的にコンパクトに記述されたCソースを読むのは大変だ!

 しかし、ソースコードは嘘をつかない! 混濁した人間世界と違って、真実は1つ!

 その点はとても心地よいぞ!

Facebook

キーワード【 川俣晶の縁側ソフトウェアその他開発日誌
【その他開発日誌】の次のコンテンツ
2008年
06月
24日
Flashで作成するゲームプログラム試作1号
3days 0 count
total 2396 count
【その他開発日誌】の前のコンテンツ
2008年
02月
02日
GAME Sharp:GAME言語のC#による実験的実装 Version 0.1
3days 0 count
total 4615 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

http://mag.autumn.org/tb.aspx/20080313141339
サイトの表紙【その他開発日誌】の表紙【その他開発日誌】のコンテンツ全リスト 【その他開発日誌】の入手全リスト 【その他開発日誌】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.