プログラム出力の変更ラインをキャプチャする方法は?

プログラム出力の変更ラインをキャプチャする方法は?

プログラムはデータの個々の行を時系列で同じ行に出力し、書き込まれるたびに行を上書きします。すべての出力ラインをキャプチャして改行区切りファイルに書き込むにはどうすればよいですか?通常のリダイレクトではこれは行われません。

答え1

\rこれが結果を使用して行われると仮定\rします\n

yourprogram | tr '\r' '\n' > logfile

違いを見る

printf "Hello\rworld\n"

そして

printf "Hello\rworld\n" | tr '\r' '\n'

これがなければ、ログファイルにリダイレクトされます。〜するすべての出力をファイルに保存します。lessファイルを表示する代わりにを使用して表示できますcat。 (前の行を上書きせずにマークさlessれます。)\r^M

プログラムが端末に直接書き込む場合は役に立ちません。この場合、すべての端末出力をキャプチャするプログラムを使用することもできます。例は次のとおりですscript

script -c yourprogram logfile

プログラムを起動し、すべての出力をキャプチャしますlogfile。これを理解するには、ログファイルの特殊文字を処理する必要があります。これはlessユーザー(または合理的な編集者)に役立ちます。

関連情報