我正在尝试将命令的输出保存到文件中。该命令是:
clang -Xclang -ast-dump -fsyntax-only main.cpp > output.txt
但是,打开后得到的output.txt文件(由ubuntu上的gedit和jedit)给了我这个:
[0;1;32mTranslationUnitDecl[0m[0;33m 0x4192020[0m <[0;33m<invalid sloc>[0m> [0;33m<invalid sloc>[0m
[0;34m|-[0m[0;1;32mTypedefDecl[0m[0;33m 0x4192558[0m <[0;33m<invalid sloc>[0m> [0;33m<invalid sloc>[0m implicit[0;1;36m __int128_t[0m [0;32m'__int128'[0m
[0;34m| `-[0m[0;32mBuiltinType[0m[0;33m 0x4192270[0m [0;32m'__int128'[0m
[0;34m|-[0m[0;1;32mTypedefDecl[0m[0;33m 0x41925b8[0m <[0;33m<invalid sloc>[0m> [0;33m<invalid sloc>[0m implicit[0;1;36m __uint128_t[0m [0;32m'unsigned __int128'[0m
[0;34m| `-[0m[0;32mBuiltinType[0m[0;33m 0x4192290[0m [0;32m'unsigned __int128'[0m
...
何时真正看起来像这样:
TranslationUnitDecl 0x4e46020 <<invalid sloc>> <invalid sloc>
|-TypedefDecl 0x4e46558 <<invalid sloc>> <invalid sloc> implicit __int128_t '__int128'
| `-BuiltinType 0x4e46270 '__int128'
|-TypedefDecl 0x4e465b8 <<invalid sloc>> <invalid sloc> implicit __uint128_t 'unsigned __int128'
| `-BuiltinType 0x4e46290 'unsigned __int128'
...
我以为可能是编码问题,所以检查了file -bi output.txt
输出的文件的编码text/plain; charset=us-ascii
。
我以为如果将编码更改为utf-8,问题将得到解决,所以我尝试了以下方法:
clang -Xclang -ast-dump -fsyntax-only main.cpp | iconv -f us-ascii -t UTF-8 > output.txt
但这并没有改变。
我该怎么做才能解决这个问题?
问题不是我要查看语法突出显示的版本(首先查看它没有问题)。我需要将由clang生成的AST保存到文件中,然后解析它,这对于剩下的颜色信息来说将是困难的。
—
斯科特
@Scott-我不是要查看输出,而是要在不保留颜色信息的情况下将其保存到文件中,这会使解析文件变得不必要地复杂。
—
maou
>
它不会生成输出,它只是将希望将clang
命令输出放入指定文件(而不是终端)的shell指定。之后,您将以不允许以相同方式使用颜色代码的方式查看它。如果要访问cat
该文件,它将像终端将接管一样工作,并且可以less
使用该-R
标志进行相同的操作。