【发布时间】:2014-04-12 05:10:42
【问题描述】:
我正在尝试运行以下命令
./someprogram | tee /dev/tty | sed 's/^.\{2\}//' > output_file
但是当我去检查文件时,文件总是空白的。如果我从命令末尾删除> output_file,我可以毫无问题地看到 sed 的输出。
有什么方法可以将此命令中 sed 的输出重定向到文件?
【问题讨论】:
-
由于某种原因,
sed是否可能打印到stderr而不是stdout? -
someprogram的输出是什么? -
它对我有用:
sed成功删除了前两个字符,结果以output_file结束。 -
将
> outfile替换为| cat - -vet。这将让您确认数据实际上来自sed的std-out,它将显示^M,^I之类的控制字符,并用$标记每行的结尾。如果您无法从该输出中得出为什么它不起作用的结论,那么我们可以在输出上使用更高级的工具,但使用它们变得更加难以解释。我的猜测是someprogram是在行尾输出^M$。 -
@shellter 你好,naab 建议为 sed 提供 -u 选项最终成功了。使用 cat - -vet,在每行的末尾放置一个“$”,尽管这是我得到的唯一额外输出