我有一个循环遍历目录中每个文本文件的脚本,并将内容存储在变量中。内容可以是1-50个字符长。文本文件的数量未知。我想以这样一种方式打印内容,即每个变量都属于一个干净的列。
for file in $LIBPATH/*.txt; do
name=$( awk 'FNR == 1 {print $0}' $file )
height=$( awk 'FNR == 2 {print $0}' $file )
weight=$( awk 'FNR == 3 {print $0}' $file )
echo $name $height $weight
done
此代码生成输出:
Avril Stewart 99 54
Sally Kinghorn 170 60
John Young 195 120
虽然所需的输出是:
Avril Stewart 99 54
Sally Kinghorn 170 60
John Young 195 120
谢谢!
答案 0 :(得分:0)
使用printf
:
printf '%-20s %3s %3s\n' "$name" "$height" "$weight"
%3s
确保所有字段都使用三个字符,%-20s
对20个字符执行相同操作,但前面的-
会使输出左对齐。
如果要将输出限制为例如20个字符,可以使用
printf '%-20.20s %3s %3s\n' "$name" "$height" "$weight"
这将为您提供左对齐的最小宽度为20个字符,最大宽度为20个字符,换句话说,它将确保您始终只有20个字符。