2017-08-04 18 views
0

stdoutを1行にのみ表示したい。連続する各行は最後の行を上書きします。ストリームにANSIコードを導入する

一般的に、私は

echo -ne "Overwrite me. \033[0K\r" 

を行うだろう。しかし、今、私は、出力パイプにしたい、とエコーは、私がSEDを使用する必要があるフィルターや、例えばものではありませんので、 sedは常にそれの出力に改行を追加しますので、

cat story.txt | some.sed.like.util.for.replacing.$.with.\033[0K\r 
+0

の可能性のある重複した[?削除して、bashのを使用して、端末内の最後の行を置き換える方法](https://stackoverflow.com/questions/2388090/how-:あなたは、シェルでwhileループを使用する必要がありますターミナルを使用している最後の行を削除して置き換えます) – hek2mgl

答えて

1

sedを使用することはできません。

while read -r line ; do 
    echo -en "\r\033[0K${line}" 
    sleep 1 
done < story.txt 
+1

'echo -en" \ r \ 033 [0K $ {line} "' - それ以外の場合、これまでに一番長い行が常に表示されます現在の行の下にあります。 – gboffi

+0

@gboffi良い点!ありがとう – hek2mgl