2017-12-23 8 views
-2

シェルでテーブルを作成する必要があります。だから、私は最初に私が最も長い文字列を検索した後、すべての列がその長さを持つように書式設定することを考えました。私の問題は、printfに変数を挿入できないことです。ここに私のコードは次のとおりです。この問題をprintfでLinuxで解決する方法はありますか?

while read line 
do 
    printf "%-$longestfile s" $line 
done < fajlok.txt 
+0

テスト可能な入力フラグメントと期待される結果を投稿した方がずっと良いでしょう – RomanPerekhrest

答えて

1

標準シェル変数の取り扱い:

printf "%-${longestfile}s" "$line" 
0

あなたはprintfのためにこのフォームを使用することができます。

printf '$-*s' "$longestfile" "$line" 

幅が文字*であれば、存在しなければなりません引数リストの数値。


一方、column -tを使用すると、列を整列させるのに便利です。例えば

for i in {1..12}; do echo $RANDOM; done | paste -d " " - - - 

for i in {1..12}; do echo $RANDOM; done | paste -d " " - - - | column -t 

考えるcolumn -tとの更なる利点は、おそらく最長の列の幅を計算する必要がないことです。

関連する問題