![如何打印到已打印输出的左侧和右侧](https://linux22.com/image/45819/%E5%A6%82%E4%BD%95%E6%89%93%E5%8D%B0%E5%88%B0%E5%B7%B2%E6%89%93%E5%8D%B0%E8%BE%93%E5%87%BA%E7%9A%84%E5%B7%A6%E4%BE%A7%E5%92%8C%E5%8F%B3%E4%BE%A7.png)
我有一个命令 say printf "%5s1"
,它的输出是:
1
如何打印已打印的2
左侧数字和3
右侧数字1
。因此,输出如下所示:
213
因此,这里有一个条件1
已经使用 command 打印出来printf "%5s1"
。
我尝试过使用下面的命令,
printf "%5s1";printf "\r%4s2%1s3\n"
但这会覆盖现有的输出1
,并且我得到以下输出。
2 3
假设我必须先使用,如何打印已打印数字右侧的数字而不1
丢失它?我正在寻找类似的东西:printf
printf "%5s1"
printf "%5s1";printf "\r%4s2???\n"
答案1
left=$(tput cub1) right=$(tput cuf1)
printf %5s1; printf '%s\n' "$left${left}2${right}3"
细节
tput cub1
move left one space
tput cuf1
non-destructive space (move right one space)
答案2
只需颠倒打印顺序并首先在右侧打印所需的字符串即可:
printf "%5s1";printf "3\r%4s2\n"
答案3
另外,用于\b
备份:
$ printf "%5s1";printf "3\b\b\b2\n"
213