当有一个程序在执行时在stout
上打印几行时,如何将所有这些行重定向到sed
并在生成它们时对它们执行某些操作?
例如:
7zip a -t7z output_folder input_folder -mx9 > sed 's/.*[ \t][ \t]*\([0-9][0-9]*\)%.*/\1/'
7zip生成一系列行作为输出,每行包含一个百分比值,我希望sed
仅显示这些值,同时生成它们。不幸的是,上面的脚本不起作用......
这样做的最佳方式是什么?
答案 0 :(得分:2)
您应该使用管道|
而不是重定向>
,以便sed
使用第一个命令输出作为输入。
上述脚本行必须在当前目录中创建sed
文件。
此外,也许7zip
会将这些行输出到stderr
而不是stdout
。如果是这种情况,首先在标准输出之前将标准错误重定向到标准输出:2>&1 |