将多个输出发送到sed

时间:2012-12-21 10:47:51

标签: linux bash

当有一个程序在执行时在stout上打印几行时,如何将所有这些行重定向到sed并在生成它们时对它们执行某些操作?

例如:

7zip a -t7z output_folder input_folder -mx9 > sed 's/.*[ \t][ \t]*\([0-9][0-9]*\)%.*/\1/'

7zip生成一系列行作为输出,每行包含一个百分比值,我希望sed仅显示这些值,同时生成它们。不幸的是,上面的脚本不起作用......

这样做的最佳方式是什么?

1 个答案:

答案 0 :(得分:2)

您应该使用管道|而不是重定向>,以便sed使用第一个命令输出作为输入。

上述脚本行必须在当前目录中创建sed文件。

此外,也许7zip会将这些行输出到stderr而不是stdout。如果是这种情况,首先在标准输出之前将标准错误重定向到标准输出:2>&1 |