我已经对通过 shell 中的 printf 打印的一些数据变量进行了表格报告。
Project One | 76 | 80M | 80M | 80M
Project Two | 46M | 52M | 52M | 52M
Project Three | 174 | 171M | - | 173M
这里的输出是手动间隔的。有没有办法打印占用固定宽度的变量?
例如,在第一行,76[space]、80M、...总共三个字符宽度,并使用 shell 变量进行打印。
答案1
如果我理解你的意思,你想要的是一个在指定字符串后留下一定数量空格的函数。它如下:
fix_space() {
string="$1"
len="$2"
perl -e "my \$str = '`printf "$string" | sed "s/'/\\'/g"`'; print \$str.' ' x ($len - length(\$str))"
}
echo "'`fix_space "ololfdsaf" 20`'"
echo "'`fix_space "ololff" 20`'"
它只是做了perl
所有脏活。字符串作为第一个参数,全长作为第二个参数。我相信这会帮助你对齐你的输出。
编辑:
你也可以不使用 shell 来做到这一点perl
。然后你必须输入:
printf "'$string`printf ' '%.0s {1..$((len - ${#string}))}`'\n"