2011-01-31 7 views
2

sedを使ってファイルから最後の非空白行を取得したいと思います。取得することが可能である場合sedを使って最後の非空白行を印刷するには?

$ echo -e "\n\none\n\ntwo\n\n\nthree\n\n" | sed '/^$/d' | sed -n '$p' 
three 

しかし、私は疑問に思うことだけで1 sedコマンドを使用して:私は、sedのパイプライン化された2を使用して期待される結果を達成することができました。おそらく、空でない各行を次々にバッファにコピーして、前の内容を上書きして最後にバッファを印刷するか?私はそれがsedで行うことができるかどうかわからない、それはちょうど私の推測です。

私にawk、tailなどの使用を提案しないでください - 私はsedだけに興味があります。ありがとうございました。たぶん

答えて

3

sed -e '/^$/d' -e '$ !d' 

?保持バッファと

その他の方法:

sed -e '/^$/ !h 
     $ {x;p;}' 
+0

ブノワ、保持バッファを持つ第二の方法は、私が探していたものです。ありがとう。 – ak83

+0

-nを2番目の解決策から除外しました。 –

3

これはあなたのために働くかもしれない:

echo -e "\n\none\n\ntwo\n\n\nthree\n\n" | 
sed '/^$/!h;$!d;g' 
three 
関連する問題