gpt4 book ai didi

bash - 如何通过评估 bash 控制字符来摆脱它们?

转载 作者:行者123 更新时间:2023-12-02 21:20:39 27 4
gpt4 key购买 nike

我有一个包含几个控制字符的输出文件(即来自屏幕的日志)。在屏幕内部,我正在运行一些程序,这些程序使用控制字符来刷新某些行(例如 top 或任何打印进度条的内容)。

我想使用 PHP 输出该文件的 tail。如果我只是读取该文件并回显其内容(使用 PHP 函数或通过调用 tail),输出会很困惑,并且比最后几行要多得多,因为它还包含已被覆盖的内容。如果相反,我在命令行中运行 tail,它只返回我想要的内容,因为终端会计算控制字符。

所以我的问题是:有没有一种方法可以评估控制字符,获取终端向我显示的输出,然后我可以在其他地方使用(例如写入文件)?

最佳答案

@5gon12eder 的答案去掉了一些控制字符(谢谢!),但它没有处理对我来说更重要的回车部分。

我发现我可以删除从行开头到该行内最后一个回车符的任何内容,并简单地保留此后的所有内容,所以这是我的 sed 命令来完成此操作:

sed 's/^.*\r\([^\r]\+\)\r\?$/\1\r/g'

然后可以使用@5gon12eder的答案进一步清理输出:

cat screenlog.0 | sed 's/^.*\r\([^\r]\+\)\r\?$/\1\r/g' | sed 's,\x1B\[[0-9?;]*[a-zA-Z],,g'

综合起来,这看起来正是我想要的。

关于bash - 如何通过评估 bash 控制字符来摆脱它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27909816/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com