在unix shell中打印后如何修改一行。我们可以删除该行并使用\r
如下所示再次写入,但是如何覆盖现有行而不完全删除它并获得如下预期输出中的输出。
命令:
printf "12345";printf "\r67";
Run Code Online (Sandbox Code Playgroud)
输出:
67
Run Code Online (Sandbox Code Playgroud)
预期产出
67345
Run Code Online (Sandbox Code Playgroud)
正如评论中所讨论的,问题在于您离开光标的位置。例如:
goldilocks@home> echo -n 1234; echo -ne "\r56"
56goldilocks@home>
Run Code Online (Sandbox Code Playgroud)
发生的事情是第一个echo
写了“1234”,然后第二个回声回到行首并打印“56”并退出。光标停留在 6 之后,接下来发生的是 shell 打印命令提示符,覆盖“34”。如果您在第二个 echo 中包含换行符(或删除-n
开关,以便 echo 自动打印换行符),您将获得:
goldilocks@home> echo -n 1234; echo -e "\r56"
5634
goldilocks@home>
Run Code Online (Sandbox Code Playgroud)
光标向下移动一行,留下“34”。