我正在使用Bash。我使用printf "%-40s%s" $a $b
在两列中显示两个字符串。第二个字符串非常长并且在第一列的下一行的开头溢出并打印。如何让第二列中的字符串溢出到第二列?
答案 0 :(得分:1)
您可以使用:
printf "%40s\n%40s\n" "aaaaaaaaaaaaaaaaaaaaaaaaaaa" "bbbbbbbbbbbbbbbbbbbbbbbbbbb"
aaaaaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbbbbb
在-
之前 40
用于左对齐。
答案 1 :(得分:0)
这不是很漂亮,我仍然觉得它可能会更好(但我没有看到任何明显的方法让它变得更好)但它对我来说是有效的(认为第一列没有正确的对齐方式):
col.sh:
#!/bin/bash
a=$1
b=$2
w=${3:-$(tput cols)}
fmta=$(fold -w 40 <<<"$a")
lca=$(wc -l <<<"$fmta")
fmtb=$(fold -w $(( w - 40 )) <<<"$b")
lcb=$(wc -l <<<"$fmtb")
if [ "$lca" -lt "$lcb" ]; then
fmta+=$(printf ' \n%.0s' $(seq 0 $(( lcb - lca ))))
fi
pr -t -2 <<<"$fmta"$'\n'"$fmtb"
运行方式:
$ a=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
$ b=bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
$ ./col.sh "$a" "$b"
当$(tput cols)
不起作用时,为终端宽度采用第三个可选参数。可以使用./col.sh "$a" "$b" "$COLUMNS"
。