ale*_*niz 1 regex notepad++ ansi-escape terraform
我正在使用 VSCode 1.51(此时为最新版本),并且在terraform plan ..从集成 PowerShell(此工作站上为 5.1)运行时,我注意到如果我将输出重定向到文本文件,可以通过运算符 ( .. > .\a.txt) 或通过 Tee-Object ( .. | Tee-Object -FilePath .\a.txt) 生成的输出文件被ASCII 转义序列破坏;特别是通过控制序列引入器 (CSI) 序列,例如 ESC[1m。到目前为止,在我看到的输出文件中,我仅观察到以下 6 个序列:
- ESC[0m
- ESC[1m
- ESC[4m
- ESC[31m
- ESC[32m
- ESC[33m
Run Code Online (Sandbox Code Playgroud)
我正在使用 Notepad++ 7.8.7 读取文件,如何用单个空格字符 (' ') 替换上述序列?
更新
显然,如果能够从terraform plan输出中删除 ASCII 转义序列那就更好了。
根据 Notepad++ 7.8.7 的文档:
Notepad++ 正则表达式使用 Boost 正则表达式库 v1.70,该库基于 PCRE(Perl 兼容正则表达式)语法,仅在很小的方面有所不同。
我直接在 Notepad++ 中替换了转义序列,使用以下正则表达式查找要替换的字符串:
\e\[(.*?)m
Run Code Online (Sandbox Code Playgroud)
并将它们替换为单个空格字符(Notepad++ 替换对话框中替换为:字段中不带引号的“ ”)。详细信息:
\e匹配转义字符,\[匹配左方括号,\e\[因此匹配控制序列引导符(“ESC [”),(.*?)m匹配任何字符串,直到第一次出现字符“m”。