インデントされたテキスト段落を印刷するbashスクリプト

インデントされたテキスト段落を印刷するbashスクリプト

テキストの節を反映するbashスクリプトがあります。インデントしたいです。

例:

echo "Something"
echo -e "\tfoo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo"

次のように印刷されます。

Something
      foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo 
foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo 
foo foo foo foo foo foo foo foo foo foo foo foo

しかし、私が望むのはこれです。

Something
    foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo 
    foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo 
    foo foo foo foo foo foo foo foo foo foo foo foo

私はこれらの段落の多くを手動でラップすることを避けることを好みます。

使用されているさまざまな技術などを見ましたが、sedシェルの組み込み機能にのみ依存するだけです(最大の簡単でなければなりません)。

修正する
このように表現すると、manページ(任意のコマンドについて)はこれらの段落のすべての形式をどのように見事に指定しますか?まさか手で切ったのではないだろうか?基本命令をロギングする際に、組み込み命令以外に他のものは使用しないようですが?

ベストアンサー1

somecommand | fold | awk '{ print "\t" $0 }'

somecommandたとえば、から出力をインポートしてecho送信すると、fold80文字に縮小されます(fold -w N折りたたみN文字の場合)。これにより、スクリプトはタブawkにインデントされた各行を印刷します。

純粋に折りたたむことはbash必然的により複雑なスクリプトにつながります。

おすすめ記事