ファイルに保存されているプログラムの出力に進行状況バーなどを表示するために使用される特殊文字を自動的にレンダリングします。

ファイルに保存されているプログラムの出力に進行状況バーなどを表示するために使用される特殊文字を自動的にレンダリングします。

シェルでプログラムを実行し、出力をファイルにリダイレクトしました。

このプログラムは、多くの移動進行状況バーなどを表示します。したがって、出力ファイルには、\rこれらの列を上書きする行などの特殊文字が含まれます。ファイルを入力すると、進行cat状況バーが再レンダリングされます。これはSSHを介して時間がかかることがあります。

進行状況バーの最終状態のみを保存するテキストファイルを作成するには?

答え1

たとえば、次のように出力をフィルタリングできますcol -b

col -b < rawoutput.txt > simplifiedversion.txt

man col:

col —
入力の逆方向改行をフィルタリングします。

[...]

-雨バックスペースキーは出力されません。各列位置に書き込まれた最後の文字のみを印刷する

たとえば、ソースファイルにANSIエスケープコードを使用すると、結果が破損する可能性があります。

答え2

文字が\r一意で、行が次のように構成されているとします。

X\rXX\rXXX\rXXXX\rXXXXX

sed を使用して、最後の項目より前のすべての項目を削除できます。\r

$ echo $'X\rXX\rXXX\rXXXX\rXXXXX' >myfile
$ sed 's/^.*\r//' myfile
XXXXX
$

関連情報