如何在Bash中使用echo格式化输出空格以实现规整表格效果
解决echo格式化表格输出的高效方案
嘿,我太懂你现在的麻烦了——手动计算每个变量的长度来凑空格对齐输出,不仅费时间还容易出错!其实完全不用这么折腾,有几个更聪明的办法能让你的数据集输出变成规整的表格,彻底告别手动凑长度的痛苦。
方法1:用printf替代echo(最推荐)
printf天生支持格式化字符串,能精准控制每一列的宽度,自动帮你对齐内容,比echo适合做表格输出多了。针对你的数据集数组,你可以这么写:
# 先打印表头,设置列宽保证对齐 printf "%-20s | %-10s\n" "Dataset" "File Format" printf "%-20s | %-10s\n" "--------" "------------" # 逐个打印数据集,自动对齐 printf "%-20s | %-10s\n" "${dataset_one[6]}" "${dataset_one[5]}" printf "%-20s | %-10s\n" "${dataset_two[6]}" "${dataset_two[5]}" printf "%-20s | %-10s\n" "${dataset_three[6]}" "${dataset_three[5]}" # 打印后续提示文本 echo -e "\nYou currently have downloaded to hdfs the following datasets:"
这里的%-20s表示左对齐且占20个字符宽度,%-10s是左对齐占10个字符,你可以根据自己的数据集名称长度调整数字,所有列都会自动对齐,完全不用手动算长度。
方法2:用column命令自动补全对齐
如果还是想用echo输出,你可以先把内容按统一分隔符拼接,再管道给column命令让它自动处理对齐:
# 输出表头和数据,用竖线做分隔符,交给column自动整理 echo -e "Dataset|File Format\n--------|------------\n${dataset_one[6]}|${dataset_one[5]}\n${dataset_two[6]}|${dataset_two[5]}\n${dataset_three[6]}|${dataset_three[5]}" | column -t -s '|' # 打印后续提示 echo -e "\nYou currently have downloaded to hdfs the following datasets:"
column -t会自动识别你指定的分隔符(这里用-s '|'声明),然后把内容转换成整齐的表格,连宽度都不用你操心。
这样输出的内容就会整整齐齐,再也不用手动计算变量长度啦!
内容的提问来源于stack exchange,提问作者Gonzalo Etse
相关产品推荐
相关产品推荐

