$を使用したときのsedの奇妙な動作(バグ?)

$を使用したときのsedの奇妙な動作(バグ?)

私は問題が発生しましたが、これがバグであるかどうか、または$を使用して行アドレスを指定するときにこれが起こるべきかどうかわかりません。デフォルトでは、次のコマンドがあります。

sed -e '$s/test/tset/g'

通常、次のように実行したいと思います。

blahblah
blahblah
  <-- Cursor is here now

意味:何かを入力してEnterを1回押すと、次の行に結果が表示されますが、次のような結果が表示されます。

blahblah

blahblah
  <-- Cursor is here now.

したがって、デフォルトでは、$記号はどういうわけかsedにカーソルを空白行に設定し、Enterをもう一度押した後にのみ結果を表示します(つまり、Enterを2回押す必要があります)。これが起こらないようにする方法はありますか?それともバグかもしれませんか?私のより複雑なパターンでは、これは実際に多くの状況を台無しにしました。

ベストアンサー1

コマンドは入力の最後の行に適用する必要があることを知っているため、読み取ることができることが確認されるsedまで、最後に処理された行を出力することはできません。もっとそれ以降のライン。

sed編集スクリプトで同じ動作を見ることはできませんいいえ$データ変換は、現在の行が入力の最後の行であるかどうかに依存しないため、アドレスが使用されます。

おすすめ記事