web-dev-qa-db-ja.com

bash-shellのprintfを使用したI / O形式

Printfを使用してシェルスクリプトの結果を出力しようとしています。結果を列に揃えるために、タブを次のように使用しています。

printf "%s\t %s\t %s\t %s\t %s\t %s\t %s\n" $i $est $var_m $jk $mst $var_M  $Tes >>tmp

しかし、問題は、場合によっては、結果が少し長いことです。

var_M=`echo "scale=8;(-1/$jk + (e(2*$jk)+1)/(e(2*$jk)-1))"|bc -l `

したがって、次のように、列に印刷をフォーマットできると、私にとってはより良いでしょう。

printf "%s *goto column 20* %s *go to column 30* " $i $est >>tmp

これは可能ですか?

このスレッド とmanページを確認しましたが、見つかりませんでした。これは可能ですか?

注意:printfに固執する特別な理由はありません。そのため、(簡単に)そのことを実行できる他の適切なコマンドも歓迎します。

編集:試行:printf "%-2s %-8s\n" $i $est >>tmpこれは明確に機能していません:

4.0 0.17169E-02
5. 0.17156E-02
10. 0.17129E-02

(リスト形式の出力の場合と同様に、2行目と2列目は整列されません)

3
BaRud

これを試して:

printf "%-20s %-30s" $i $est >>tmp
5
damphat