ncursesライブラリを使用してプログラムをビルドするときに出力をファイルにリダイレクトする方法

ncursesライブラリを使用してプログラムをビルドするときに出力をファイルにリダイレクトする方法

重複の可能性:
スクリプト出力から制御文字(コンソールコード/色付き)を削除する

このモードで出力をファイルにリダイレクトすると、top >> somefile.txt出力に多くのゴミ値が表示されます。ただし、topバッチ(top -b -n1 >> somefile.txt)オプションにより、ファイル出力は要求に応じて行われます。同様のプログラムでは、nethogsそのようなオプションはありません。この場合、良い結果はありますか?

答え1

ジャンクを直接フィルタリングすることもできます。たとえば、印刷できないすべての文字が削除されます。

nethogs | sed 's,[^[:print:]],,g' >> somefile.txt

必要に応じてそれを拡張するか、逆のアプローチをとることで、明示的なガベージではなくアイテムだけを通過させることができます。 (英数字と句読点):

nethogs | sed 's,[^[:alnum:][:punct:]],,g' >> somefile.txt

出力が色分けされている場合、色エスケープ文字列を削除するにはいくつかの追加操作が必要です。

答え2

これを行う良い方法はありませんが、時には端末を設定すると役に立ちます。

例えば、

TERM=dumb top

ほとんどの制御文字を削除しました。

関連情報