为什么我不能将输出从sed重定向到文件

时间:2014-04-12 05:10:43

标签: bash debian

我正在尝试运行以下命令

./someprogram | tee /dev/tty | sed 's/^.\{2\}//' > output_file

但是当我去检查时,文件总是空白的。如果我从命令的末尾删除> output_file,我可以看到sed的输出没有任何问题。

有没有办法可以将此命令中sed的输出重定向到文件?

2 个答案:

答案 0 :(得分:5)

使用sed标志从-u命令中删除输出缓冲,并确保您要记录的内容不在stderr上

  

-u, - unbuffered

  load minimal amounts of data from the input files and flush the output buffers more often

最终命令:

./someprogram | tee /dev/tty | sed -u 's/^.\{2\}//' > output_file

这会发生在流中(通常是程序在整个生命周期内将输出发送到stdout)。

sed / grep和其他命令在这些情况下执行一些缓冲,您必须明确禁用它才能在程序运行时获得输出。

答案 1 :(得分:1)

你有一个Stderr&标准问题。结帐此主题的In the shell, what does " 2>&1 " mean?。应该解决你的问题。