[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
バグの報告はbug-gnu-utils@gnu.orgに電子メールを送ってください.
Subject:
フィールドのどこかに,単語"sed"を含めてください.また,
可能であれば,報告の内容にsed --version
の出力も含めてください.
以下のようなバグの報告を送らないでください.
[while building frobme-1.3.4] $ configure sed: file sedscr line 1: Unknown option to 's' |
GNU sed
でお気に入りのパッケージをコンフィグレーションできない場合,
特定の問題を確認するために時間をかけ,スタンドアローンのテストケースを作
成してください.Cコンパイラのようなその他のプログラムとは異なり,
sed
に対してそのようなテストケースを作成することはまったく単純です.
スタンドアローンのテストケースには,テストを実行するために必要なすべての
データと,問題を生じたsed
の呼び出しで指定したものを含めてください.
スタンドアローンのテストケースは小さい方が良いでしょう.テストケースは,
"frobme-1.3.4のコンフィグレーションを試みた"というような,sed
からかけ離れているものを必要とすべきではありません.そうです,それはバグ
を探す情報として原則的には十分ですが,見通しはあまり現実的ではありません.
以下は一般的なバグやバグではないもので報告されているものです.
sed -n
とs/regex/replace/p
sed
のバージョンによっては,`-n'コマンドスイッチが指定されていない
限り`s'コマンドの`p'(プリント)オプションを無視するものがあります.それ以
外のバージョンは`p'オプションを尊重します.どちらの手法もPOSIX.2で
は許可されていて,GNU sed
(GNU sed
を基本としたもの)では
後者の手法になっています.私は,複雑なスクリプトを書くときは,この手法が
より良いと思っています(自由に行動できます)が,移植性の高いスクリプトでは,
どちらの動作でも正しく動作するように書くべきです.
sed
は,Posixの基本正規表現の構文を使用しています.標準によると,
エスケープシーケンスの意味はこの構文では未定義です.sed
で有名なも
のは,\|
,\+
,\?
,\
,\
,
\<
,\>
,\b
,\B
,\w
,そして\W
で
す.
Posixの基本正規表現を使用しているすべてのGNUプログラムでは,sed
は
これらのエスケープシーケンスをメタ文字として解釈します.そのため,
x\+
は一つ以上のx
の出現にマッチします.abc\|def
は
abc
またはdef
にマッチします.
この構文は,他のsed
に対して書かれたスクリプトを実行するとき問題に
なるかもしれません.sed
プログラムには,\|
と\+
がリテ
ラル文字の|
と+
にマッチするという仮定を用いて書かれているも
のもあります.そのようなスクリプトを,GNU sed
やGNU sed
のような近代的なsed
を実装しているものを用いて使用する場合,贋のバッ
クスラッシュを削除して修正する必要があります.
更に,このバージョンのsed
は,印刷不可能な文字(マルチバイト文字を
含む)をスクリプトに挿入するため,いくつかのエスケープ文字(\a
,
\c
,\d
,\o
,\r
,\t
,\v
,
\x
)をサポートしています.これらは,他のsed
に対して書かれて
いるスクリプトで同様な問題を生じるでしょう.
-i
で読み込み専用のファイルを破壊する
手短に言うと,sed d -i
では読み取り専用のファイルの内容を削除し,
一般的に-i
オプション((see section Invocation)では保護
されたファイルを破壊します.これはバグではありませんが,Unixファイルシス
テムで動作する方法に影響します.
ファイルへの許可はファイルのデータに生じる可能性があることを告げています
が,ディレクトリの許可はディレクトリのファイルのリストに生じる可能性があ
ることを告げています.sed -i
は書き込み属性でディスクに存在してい
るファイルを開きませんが,最終的にはオリジナルファイル名に名前を変更する
一時的なファイルで作業します.ファイルの名前を変更したり削除したりする場
合,実際にはディレクトリの内容を編集していることになるので,その処理はファ
イルではなくディレクトリの許可に依存します.同じ理由で,sed
は読み
込み専用のディレクトリの書き込み可能なファイルで-i
を使用しません
(しかし,信じられないことにバグとして報告してきた人はいません...).
[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |