sed 出力をリダイレクトできません。

sed 出力をリダイレクトできません。

数字から先行ゼロを削除するために、sedを介してクロック出力をパイプしました。次のようになります。

clock -sf 'S%A, %B %d. %I:%M %P' | sed 's/\b0\+\([0-9]\+\)/\1/g'

これはうまく機能し、私が望む出力を生成します。

ただし、出力をファイルにリダイレクトしようとすると、ファイルには何も書き込まれません。以下は機能しません。

clock -sf 'S%A, %B %d. %I:%M %P' | sed 's/\b0\+\([0-9]\+\)/\1/g' > testfile

テストファイルには何も記録されません。私は何が間違っていましたか?

ベストアンサー1

出力バッファリングの問題があります。sed端末は通常、出力に書き込まないと出力をバッファリングするため、バッファがいっぱいになるまで(おそらく4Kバイトごとに)ファイルには何も書き込まれません。

-u出力バッファリングをオフにするには、オプションを使用しますsed

clock -sf 'S%A, %B %d. %I:%M %P' | sed -u 's/\b0\+\([0-9]\+\)/\1/g' > testfile

おすすめ記事