4

出力をテーブルのように printf に揃えるにはどうすればよいですか?

Title                                             Author
BaokyBook                                              Baoky2
Use basename commandUse basename command ..             Baoky

私の部分的なコードはこのようなものです

titlelength=${#title};

最初にタイトルの長さを取得し、次にこのように出力します

titlespace=`expr 60 - titlelength`;
printf "%s %${titlespace}s\n" "$title" "$author"

しかし、アライメントが正しくありません。うまくアライメントするにはどうすればよいですか

以下の回答への返信として:

変更を行った後

私の左はすべて右に揃えます。そして、それは機能していないようです。

4

1 に答える 1

4

最も簡単な方法は、タイトルを固定幅で印刷することです。

printf "%30s %s\n" "$title" "$author"

最大幅を決定したい場合は、出力を行う前にすべてのデータを読み取る必要があります。または、単に出力を にパイプすることもできますcolumn -t。または、タイトルを選択した幅に切り捨てます (文字列を切り捨てるこの手法はバシズムです)。

 printf "%30s %s\n" "${title:0:30}" "$author"
于 2012-07-18T17:48:15.687 に答える