1

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

例如:

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

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

做这个的最好方式是什么?

4

1 回答 1

2

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

上面的脚本行必须已经sed在当前目录中创建了一个文件。

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

于 2012-12-21T10:55:18.787 回答