2016-07-23 6 views
2

Bashにインデント文字列の例がありますか(出力用)? printfを使用している例が見つかりましたが、期待どおりに動作していないようです。 与えられた文字列を指定された数のスペースでインデントするだけです。printfを使ってBashで文字列をインデントする方法は?

echo "Header" 
indent "Item 1" 2 
indent "Sub Item 1a" 4 
indent "Sub Item 1b" 4 

文字列は、少なくとも3列であることを保証するために必要なように、printf

Header 
    Item 1 
    Sub Item 1a 
    Sub Item 1b 

答えて

5

%3s手段「の文字列のようなものを出力を生成しますが、できるだけ多くの初期のスペースを持つでしょうワイド"。

文字列が空文字列''であっても、この場合は%3sは本質的に「3つのスペース」を意味します。

indent "Sub Item 1a" 4は、printf '%4s%s\n' '' "Sub Item 1a"と表すことができます。これは、4つのスペースと、それに続く"Sub Item 1a"と改行を出力します。

したい場合は、関数としてindentを実装できます。

function indent() { 
    local string="$1" 
    local num_spaces="$2" 

    printf "%${num_spaces}s%s\n" '' "$string" 
} 
+0

がそこに改行を追加する必要があり、 'printfの "%の$ {} num_spaces S%S \ n" は' – IntrovertedRoot

関連する問題