Linux 向sed发送多个输出

Linux 向sed发送多个输出,linux,bash,Linux,Bash,当有一个程序在执行时在stout上打印几行时,如何将所有这些行重定向到sed,并在生成它们时对它们执行一些操作 例如: 7zip a -t7z output_folder input_folder -mx9 > sed 's/.*[ \t][ \t]*\([0-9][0-9]*\)%.*/\1/' 7zip生成一系列行作为输出,每个行包括一个百分比值,我希望sed在生成这些值时只显示这些值。不幸的是,上面的脚本不起作用 执行此操作的最佳方法是什么?您应该使用管道而不是重定向,以便sed使

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

例如:

7zip a -t7z output_folder input_folder -mx9 > sed 's/.*[ \t][ \t]*\([0-9][0-9]*\)%.*/\1/'
7zip生成一系列行作为输出,每个行包括一个百分比值,我希望
sed
在生成这些值时只显示这些值。不幸的是,上面的脚本不起作用


执行此操作的最佳方法是什么?

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

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


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

您应该使用
管道传输,而不是重定向到
sed
文件。另外,考虑使用<代码> GRP。GRIP会带来一些好处吗?它可以帮助你简化重新使用。您可以对所需内容进行grep,并仅显示结果。