我正在研究一个向stdout发送大量输出的程序,但我希望能够轻松地告诉程序正在做什么.我已经看到一些程序显示脚本或程序的输出,但控制台上的最后一行是"保留",这意味着命令的输出显示在屏幕上,但是最后一行(或两行,或者多行) )保留用于静态或偶尔改变的状态文本(例如Building <xxxxxx>...).这样,可以从脚本/程序中看到输出以进行调试/故障排除,但也可以快速浏览并查看程序的状态.有没有办法用shell脚本实现这个目的?我不介意使用内置的系统工具,例如awk,格式化文本,只要所使用的工具在大多数系统中都很常见.如果可能的话,我也想避免ncurses和其他图书馆一起使用.
如果你仍然不明白我在说什么,我会试着在这里说明一下:
make -gcc -NOFLAGS -someotherGibberishHere Component1afdjadfjfadkladfjk make -gcc -NOFLAGS -someotherGibberishHere Component2afdjadfjfadkladfjk make -gcc -NOFLAGS -someotherGibberishHere Component3afdjadfjfadkladfjk make -gcc -NOFLAGS -someotherGibberishHere Component4afdjadfjfadkladfjk make -gcc -NOFLAGS -someotherGibberishHere Component5afdjadfjfadkladfjk make -gcc -NOFLAGS -someotherGibberishHere Component6afdjadfjfadkladfjk make -gcc -NOFLAGS -someotherGibberishHere Component7afdjadfjfadkladfjk make -gcc -NOFLAGS -someotherGibberishHere Component8afdjadfjfadkladfjk make -gcc -NOFLAGS -someotherGibberishHere Component9afdjadfjfadkladfjk make -gcc -NOFLAGS -someotherGibberishHere Component10afdjadfjfadkladfjk make -gcc -NOFLAGS -someotherGibberishHere Component11afdjadfjfadkladfjk . . (etc.) . ------------------------------------------------------------------------ Installing component 11/134...
在这个特定的例子中,即使控制台输出开始滚动,我也希望"安装组件11/134 ......"这一行保持在那里.最好,我也想把这条线保持在它上面.
这样,一旦我们进入程序的厚度并且通常shell将开始滚动,我们仍然会看到:
. . …
给定输入:
apple: banana eggplant
banana: cantaloupe durian
eggplant:
fig:
Run Code Online (Sandbox Code Playgroud)
我想将它连接成以下格式:
?? apple
? ?? banana
? ? ?? cantaloupe
? ? ?? durian
? ?? eggplant
?? fig
Run Code Online (Sandbox Code Playgroud)
可能有也可能没有多个根元素(在上面的例子中,有两个根元素),我想找到一种解决方案,可以毫无问题地处理它们。
是否有任何命令行工具可以处理这种转换?如果做不到这一点,其他脚本语言中是否有任何东西可以轻松处理这个问题(我已经看过 Python 的,pprint但我也不知道如何将它用于类似的事情)?