此问题在此处已有答案:
Can I programmatically "burn in" ANSI control codes to a file using unix utils?(2个答案)
两年前就关门了。
我正在使用VSCode 1.51(目前是最新版本),在从集成PowerShell(在此工作站上为5.1)运行terraform plan ..
时,我注意到如果我将输出重定向到文本文件,无论是通过操作符(.. > .\a.txt
)还是通过Tee-Object(.. | Tee-Object -FilePath .\a.txt
),生成的输出文件都会被ASCII escape sequences损坏;特别是通过控制序列引入器(CSI)序列,如ESC[1 m。在我目前看到的输出文件中,我只观察到以下6个序列:
- ESC[0m
- ESC[1m
- ESC[4m
- ESC[31m
- ESC[32m
- ESC[33m
我正在使用Notepad++ 7.8.7读取文件,如何用单个空格字符(' ')替换上述序列?
更新
显然,如果可以从terraform plan
输出中删除ASCII转义序列,那就更好了。
2条答案
按热度按时间o4tp2gmn1#
根据Notepad++ 7.8.7文档:
Notepad正则表达式使用Boost正则表达式库v1.70,它基于PCRE(Perl兼容正则表达式)语法,只是在很小的方面与之不同。
我直接在Notepad中替换了转义序列,使用以下正则表达式查找要替换的字符串:
并将它们替换为单个空格字符(“记事本++替换”对话框上的“替换为:”字段中不带引号的“”)。详细信息:
\e
匹配转义字符,\[
匹配左方括号,\e\[
因此匹配控制序列引入器(“ESC [”),(.*?)m
匹配第一次出现字符'm'之前的任何字符串。lskq00tm2#
这并不是对您的问题的直接回答,但我只是想指出,
terraform plan
有一个-no-color
选项,它将禁用控制代码,只在源代码处发出纯文本,避免了以后剥离代码的需要。