我需要在Shell中创建一个表。所以,我认为首先我搜索最长的字符串,之后我将格式化,每列都有这个长度。我的问题是我无法在printf中插入变量。这是我的代码:
while read line
do
printf "%-$longestfile s" $line
done < fajlok.txt
标准shell变量处理:
printf "%-${longestfile}s" "$line"
您可以将此表单用于printf:
printf '$-*s' "$longestfile" "$line"
如果宽度是字符*
,则参数列表中必须有一个数字。
另一方面,使用column -t
可用于拉直色谱柱。例如考虑
for i in {1..12}; do echo $RANDOM; done | paste -d " " - - -
和
for i in {1..12}; do echo $RANDOM; done | paste -d " " - - - | column -t
column -t
的另一个好处是您可能不必计算最长的列宽。