作成者行に対して保持しながら、Fortune出力から強制改行を削除します。

作成者行に対して保持しながら、Fortune出力から強制改行を削除します。

最近、私はこの素晴らしいコマンドを見つけfortune、すぐにそれを使って継続的なチャットに毎晩引用を送りました。

今、強制改行を削除する方法を知りたいです。引用符しかし、保管してください。作成者行最後に。

なぜ?チャットウィンドウの幅が異なるため、ほとんどの場合、生成された出力は二重ラップされます。 (これはうまく表現されていませんが、おそらく私が意味するものをすでに理解しているはずです。そうでない場合は、これはあなたにとって重要です。自由にお問い合わせください。説明)。

もちろん、解決策を検索して次を見つけました。

echo -n `fortune`

しかし、これは明らかにすべての改行文字を削除します。

互換性のあるソリューションが最も高く評価されてshいますが、単純さが大幅に向上した場合bash(他の?)オプションも可能です。


2016年2月12日に更新されました:

要求に応じて複数行の富を出力する例:

me@myhost:~$ fortune
Mit jemand leben oder in jemand leben, ist ein großer 
Unterschied. Es gibt Menschen, in denen man leben kann, ohne mit 
ihnen zu leben, und umgekehrt. Beides zu verbinden, ist nur der 
reinsten Liebe und Freundschaft möglich.
        -- Goethe, Maximen und Reflektionen, Nr. 649
me@myhost:~$ 

以下の提案されたソリューションはこれを行うことができます。

me@myhost:~$ fortune | sed ':a;N;$!ba;s/\n[[:space:]]\{2\}--/ --/'
Die so genannten Naturdichter sind frisch und neu aufgeforderte, 
aus eine rüberbildeten, stockenden, manierierten Kunstepoche 
zurückgewiesene Talente. Dem Platten können sie nicht ausweichen, man 
kann sie daher als rückschreitend ansehen; sie sind aber 
regenerierend und veranlassen neue Vorschritte. -- Goethe, Maximen und Reflektionen, Nr. 258
me@myhost:~$ 

これは非常に良い提案ですが、必要な正確な解決策を提供するわけではありません。それは私が達成したいものと正反対です。 sed表現を理解したら、論理を逆にしようとします...できるだけ早くやりましょう! :D

ベストアンサー1

echo $(fortune) | sed 's/-- /\n    -- /'

作成者行の前に先頭のスペースを挿入します。これはechoキャリッジリターンを削除し、作成者プレフィックスを改行と作成者プレフィックスに置き換えます。

おすすめ記事