在bash中打印输出时填充数字的最佳方法是什么,这样数字在屏幕上右对齐.所以这:
00364.txt with 28 words in 0m0.927s
00366.txt with 105 words in 0m2.422s
00367.txt with 168 words in 0m3.292s
00368.txt with 1515 words in 0m27.238
Run Code Online (Sandbox Code Playgroud)
应该像这样打印:
00364.txt with 28 words in 0m0.927s
00366.txt with 105 words in 0m2.422s
00367.txt with 168 words in 0m3.292s
00368.txt with 1515 words in 0m27.238
Run Code Online (Sandbox Code Playgroud)
我是在for循环中逐行打印出来的.我将知道文件中单词数量的上限(现在不是).
Suv*_*apa 39
对于bash,请使用printf
带对齐标志的命令.
例如:
printf '%7s' 'hello'
Run Code Online (Sandbox Code Playgroud)
打印:
hello
Run Code Online (Sandbox Code Playgroud)
(想象一下有两个空格)
现在,请根据您的问题自行决定.
Pau*_*ce. 24
这里有一个更清晰的例子:
#!/bin/bash
for i in 21 137 1517
do
printf "...%5d ...\n" "$i"
done
Run Code Online (Sandbox Code Playgroud)
生产:
... 21 ...
... 137 ...
... 1517 ...
Run Code Online (Sandbox Code Playgroud)
如果您有兴趣动态更改宽度,可以使用printf的'%*s'功能
printf '%*s' 20 hello
Run Code Online (Sandbox Code Playgroud)
打印
hello
Run Code Online (Sandbox Code Playgroud)
以下是上述答案的组合,其中删除了5
字符的硬编码字符串长度:
VALUES=( 21 137 1517 2121567251672561 )
MAX=1
# Calculate the length of the longest item in VALUES
for i in "${VALUES[@]}"; do
[ ${#i} -gt ${MAX} ] && MAX=${#i}
done
for i in "${VALUES[@]}"; do
printf "... %*s ...\n" $MAX "$i"
done
Run Code Online (Sandbox Code Playgroud)
结果:
... 21 ...
... 137 ...
... 1517 ...
... 2121567251672561 ...
Run Code Online (Sandbox Code Playgroud)