与宽度未知的 bash 中的 printf 左对齐

Left align with printf in bash with unknown width

我试图在 bash 中以未知宽度与 printf 左对齐。

我该怎么做?

有点像这样,但这行不通

max=<enter random number>
printf "%-${max}s|", "Instance"

这里的重点是下面的实例将是一个未知长度,可以是动态长度。

示例输入

max=10

示例输出

Instance  |

示例输入 2

max=12

示例输出 2

Instance    |

我想您正在尝试打印 table。我认为您无法单独使用 printf 来完成此操作。这基本上需要你的行输出命令来预测未来的输出。

如果您可以容忍 post- 处理,您可以简单地使用 column 命令来完成。只需选择一个您想用填充替换的字符,然后按照以下示例进行操作(我选择了反斜杠 \):

printf "%s\|\n" "Instance" "Linstance" "Mintinginstance" | column -ts'\'

输出:

Instance         |
Linstance        |
Mintinginstance  |

您可以使用 * 作为长度:

for ((max=8;max<15;max++)); do
    printf "%-*s|\n" ${max} "Instance"
done

结果:

Instance|
Instance |
Instance  |
Instance   |
Instance    |
Instance     |
Instance      |