如何从文本文件中去除 ANSI 转义码?
How to strip the ANSI escape codes from a text file?
我正在开发 VSCode 1.51(目前是最新版本),而 运行 terraform plan ..
来自集成的 PowerShell(此工作站上的 5.1)我注意到如果我通过运算符 (.. > .\a.txt
) 或通过 Tee-Object (.. | Tee-Object -FilePath .\a.txt
) 将输出重定向到文本文件,生成的输出文件会被 ASCII escape sequences 破坏;特别是通过控制序列引入器 (CSI) 序列,例如 ESC[1m.
到目前为止,在我看到的输出文件中,我只观察到以下 6 个序列:
- ESC[0m
- ESC[1m
- ESC[4m
- ESC[31m
- ESC[32m
- ESC[33m
我正在使用 Notepad++ 7.8.7 读取文件,如何将上述序列替换为单个 space 字符 (' ')?
更新
显然,如果可以从 terraform plan
输出中删除 ASCII 转义序列,那就更好了。
根据 Notepad++ 7.8.7 的文档:
Notepad++ regular expressions use the Boost regular expression library v1.70, which is based on PCRE (Perl Compatible Regular Expression) syntax, only departing from it in very minor ways.
我直接在 Notepad++ 中替换了转义序列,使用以下正则表达式查找要替换的字符串:
\e\[(.*?)m
并将它们替换为单个 space 字符(' ' 在 Notepad++ 替换对话框的 替换为: 字段中没有引号)。
详情:
\e
匹配转义字符,
\[
匹配左方括号,
\e\[
因此匹配控制序列介绍符 ("ESC ["),
(.*?)m
匹配任何字符串,直到第一次出现字符 'm'.
这不是您所问问题的直接答案,但我只是想指出 terraform plan
有一个 -no-color
选项,它将禁用控制代码并仅发出纯文本在源头上,避免以后删除代码的需要。
我正在开发 VSCode 1.51(目前是最新版本),而 运行 terraform plan ..
来自集成的 PowerShell(此工作站上的 5.1)我注意到如果我通过运算符 (.. > .\a.txt
) 或通过 Tee-Object (.. | Tee-Object -FilePath .\a.txt
) 将输出重定向到文本文件,生成的输出文件会被 ASCII escape sequences 破坏;特别是通过控制序列引入器 (CSI) 序列,例如 ESC[1m.
到目前为止,在我看到的输出文件中,我只观察到以下 6 个序列:
- ESC[0m
- ESC[1m
- ESC[4m
- ESC[31m
- ESC[32m
- ESC[33m
我正在使用 Notepad++ 7.8.7 读取文件,如何将上述序列替换为单个 space 字符 (' ')?
更新
显然,如果可以从 terraform plan
输出中删除 ASCII 转义序列,那就更好了。
根据 Notepad++ 7.8.7 的文档:
Notepad++ regular expressions use the Boost regular expression library v1.70, which is based on PCRE (Perl Compatible Regular Expression) syntax, only departing from it in very minor ways.
我直接在 Notepad++ 中替换了转义序列,使用以下正则表达式查找要替换的字符串:
\e\[(.*?)m
并将它们替换为单个 space 字符(' ' 在 Notepad++ 替换对话框的 替换为: 字段中没有引号)。 详情:
\e
匹配转义字符,\[
匹配左方括号,\e\[
因此匹配控制序列介绍符 ("ESC ["),(.*?)m
匹配任何字符串,直到第一次出现字符 'm'.
这不是您所问问题的直接答案,但我只是想指出 terraform plan
有一个 -no-color
选项,它将禁用控制代码并仅发出纯文本在源头上,避免以后删除代码的需要。