【发布时间】:2016-03-21 00:02:15
【问题描述】:
我想产生以下输出:
> Avril Stewart 99 54
> Sally Kinghorn 170 60
> John Young 195 120
> Yutte Schim... 250 40
如您所见,少于 14 个字符的名称用空格填充。长度超过 15 个字符的名称将被截断:“Yutte Schimmelpenninck”截断为“Yutte Schim...”。
这是我尝试实现的(变量$name、$height 和$weight 是从文件中提取的,并且循环对每个文件数据运行printf 命令):
printf '%-14s -%3s -%3s\n' "$name" "$height" "$weight"
> Avril Stewart 99 54
> Sally Kinghorn 170 60
> John Young 195 120
> Yutte Schimmelpenninck 250 40
printf 单行是理想的解决方案。
什么代码会产生第一个输出块?
【问题讨论】:
-
数据从何而来?
-
你确定这是你尝试的吗?我认为您的格式字符串会在字段之间产生
-。 -
这些字段是从一个未知长度的文件中读入的。实际发出的命令是 printf '%-14s -%3s -%3s\n' $name $weight $height。
标签: bash awk printf output formatted