如何打印到已打印输出的左侧和右侧

如何打印到已打印输出的左侧和右侧

我有一个命令 say printf "%5s1",它的输出是:

    1

如何打印已打印的2左侧数字和3右侧数字1。因此,输出如下所示:

   213

因此,这里有一个条件1已经使用 command 打印出来printf "%5s1"

我尝试过使用下面的命令,

 printf "%5s1";printf "\r%4s2%1s3\n"

但这会覆盖现有的输出1,并且我得到以下输出。

   2 3

假设我必须先使用,如何打印已打印数字右侧的数字而不1丢失它?我正在寻找类似的东西:printfprintf "%5s1"

printf "%5s1";printf "\r%4s2???\n"

答案1

left=$(tput cub1) right=$(tput cuf1)
printf %5s1; printf '%s\n' "$left${left}2${right}3"

细节

来自Bash 提示符 HOWTO:

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

相关内容