Arrays 使用printf打印无空白的数组元素
我可以在循环中使用echo打印阵列元素,但输出格式非常糟糕。在这里,我尝试注入tab,但是元素之间有很多空格,因为每个元素的长度都不同。我不知道如何使用printf?我试过了,但就是不能正常工作。有没有办法格式化printf或echo,使每个元素之间的空格数相等?这让我快发疯了Arrays 使用printf打印无空白的数组元素,arrays,bash,printf,echo,Arrays,Bash,Printf,Echo,我可以在循环中使用echo打印阵列元素,但输出格式非常糟糕。在这里,我尝试注入tab,但是元素之间有很多空格,因为每个元素的长度都不同。我不知道如何使用printf?我试过了,但就是不能正常工作。有没有办法格式化printf或echo,使每个元素之间的空格数相等?这让我快发疯了 while [[ $counter -lt $nai ]]; do #echo ${slist[$counter]} $'\t' ${sstate[$counter]} $'\t' $'\t' ${scached[$co
while [[ $counter -lt $nai ]];
do
#echo ${slist[$counter]} $'\t' ${sstate[$counter]} $'\t' $'\t' ${scached[$counter]}
printf ${slist[$counter]} $'\t' ${sstate[$counter]} $'\t' $'\t' ${scached[$counter]}
counter=$(( $counter + 1 ))
done
简而言之,我只想以这样的格式打印元素,元素之间的空格数相等
abc cdf efg
我得到的是
abc cdf efg
谢谢尝试将格式字符串与printf一起使用
printf "%s %s %s\n" ${slist[$counter]} ${sstate[$counter]} ${scached[$counter]}
如果字段没有空格,请使用列-t
:
{
echo my dog has fleas
echo some random words here
} | column -t
或者,在您的情况下:
while。。。;做done | column-t
如果要打印元素之间有N个空格,可以使用printf:
a="foo"
b="somestring"
c="bar"
# Print each argument with three spaces between them
printf "%s " "$a" "$b" "$c"
# Print a line feed afterwards
printf "\n"
这导致:
foo somestring bar
otherdata foo bar
您还可以使用格式%-12s
将每个元素填充到12个字符:
# Pad each field to 12 characters
printf "%-12s" "$a" "$b" "$c"
printf "\n"
导致:
foo somestring bar
otherdata foo bar
也许这会对你有所帮助:@Martin
“你的打印声明”| tr-s''
检查这是否有效,谢谢它更好。。间隔相等。。但由于元素的长度不相等,因此它们没有正确对齐。有没有办法使它们正确对齐?答案已更新。显示多行示例输入可能会有所帮助。
foo somestring bar
otherdata foo bar