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,并仅显示结果。