0

sed の 'N' コマンドは、Cygwin の sed (GNU sed だと思います) と AIX の sed では動作が異なります。

$cat > input
Apple
$cat input
Apple
$sed 'N' input
$cat > input
Apple
Orange
$sed 'N' input
Apple
Orange
$

上記のように、sed 'N' input新しい入力行がなかったため、最初のコマンドは AIX の sed に対して何も出力しませんでした。ただし、Cygwin の sedAppleは同じように出力されます。unix/sed の第一人者はこれに光を当てることができますか? 前もって感謝します。

4

2 に答える 2

1

FWIW、この動作がここに文書化されていることがわかりました: http://sed.sourceforge.net/sedfaq6.html#s6.7.5

于 2012-11-27T13:47:22.600 に答える
0

AIX は POSIX 標準に従って正しく動作しているように見えます (イタリック体):

[2addr] N

埋め込まれた < newline > を使用して、元の素材から追加された素材を分離することにより、入力の次の行を、その末尾の < newline > を除いてパターン スペースに追加します。現在の行番号が変わることに注意してください。

次の入力行が利用できない場合、N コマンド動詞はスクリプトの最後に分岐し、新しいサイクルを開始したり、パターン スペースを標準出力にコピーしたりせずに終了します。

これはhttp://pubs.opengroup.org/onlinepubs/009695399/utilities/sed.htmlからのものです。

したがって、おそらく GNU sed でバグ (または少なくとも POSIX への非準拠) を発見したことでしょう。

于 2012-11-22T12:45:55.403 に答える