与宽度未知的 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 |
我试图在 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 |