在 bash-shell 中使用 printf 的 i/o 格式

BaR*_*Rud 3 shell bash columns printf

我正在尝试使用 printf 输出我的 shell 脚本的结果。为了保持列中的结果对齐,我使用选项卡作为:

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
Run Code Online (Sandbox Code Playgroud)

但问题是,在某些情况下,结果有点长,比如输出,

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

所以,如果我可以格式化打印到列,对我来说会更好,比如:

printf "%s *goto column 20* %s *go to column 30* " $i $est >>tmp
Run Code Online (Sandbox Code Playgroud)

这可能吗?

我已经检查了这个线程和手册页,但没有找到它。这可能吗?

注意:我没有任何特别的理由坚持使用 printf。因此,也欢迎任何其他可以(轻松)完成此操作的合适命令。

编辑:尝试过:printf "%-2s %-8s\n" $i $est >>tmp 这显然不工作:

4.0 0.17169E-02
5. 0.17156E-02
10. 0.17129E-02
Run Code Online (Sandbox Code Playgroud)

(第二行/第二列没有对齐,就像列表格式输出的情况一样)

小智 5

尝试这个:

printf "%-20s %-30s" $i $est >>tmp
Run Code Online (Sandbox Code Playgroud)