2

を使用してsed、ファイルの最後の一致行を印刷したいと思います。私は遭遇しました

sed: ファイルの終わりまで最後に一致したものを返す

ただし、行の範囲ではなく、一致する行自体のみが必要です。そのページを使用して、実際に機能するコマンドを思いつきました

$ sed '/out_time=/h; $!d; x' progress.txt
out_time=00:00:07.720000

問題は、なぜこれが機能するのか、または別の言い方をすれば、このコマンドで何が起こっているのかです。存在する場合は、より簡単なsedコマンドも含めます。

4

3 に答える 3

3

これはもっと簡単に考えられると思います:

sed -n '/out_time=/h; ${x;p;}' progress.txt

次のように書くこともできます。

sed -n '/out_time=/h; $x; $p' progress.txt

これらすべてにおいて、sedはホールド スペースに一致する行を保持しているだけなので、最後に見つかった一致は、ファイルの最後に到達したときにホールド スペースにあります。その時点で、ホールド スペースをパターン スペースにプルしてから印刷します。

于 2013-03-12T05:33:14.700 に答える