我不确定您所说的“评估”控制字符是什么意思,但您可以轻松删除它们。
这是一个使用示例,sed
但如果您已经在使用 PHP,那么它的内部正则表达式处理功能似乎更合适。命令
$ sed 's,\x1B\[[0-9?;]*[a-zA-Z],,g' file.dat
会将 的内容转储file.dat
到标准输出,并删除所有ANSI 转义序列。(而且我很确定不会删除任何其他内容,除非您的文件包含无效的转义序列,在这种情况下,无论如何操作都是不明确的。)
这是一个小演示:
$ echo -e "This is\033[31m a \033[umessy \033[46mstring.\033[0m" > file.dat
$ cat file.dat
# The output of the above command is not shown to protect small children
# that might be browsing this site.
$ reset # your terminal
$ sed 's,\x1B\[[0-9?;]*[a-zA-Z],,g' file.dat
This is a messy string.
该less
程序内置了一些更高级的逻辑,可以选择性地替换一些转义序列。阅读手册页以获取相关选项。