コマンドの出力をファイルに保存しようとしています。コマンドは次のとおりです。
clang -Xclang -ast-dump -fsyntax-only main.cpp > output.txt
ただし、(ubuntuでgeditとjeditによって)開かれたときの結果のoutput.txtファイルは、これを私に与えます:
[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をファイルに保存してから解析する必要がありますが、色情報が残っていると難しいでしょう。
>
出力を生成せずclang
、ターミナルではなく、指定されたファイルにコマンドの出力を配置することを単にシェルに指定することに注意してください。その後、同じ方法でカラーコードを許可しない方法で表示しています。あなたがした場合cat
、ファイルには、端末として働くだろう引き継ぐだろう、とあなたが作ることができるless
と同じことを行う-R
フラグ。