当有一个程序在执行时在 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 |
关于linux - 将多个输出发送到 sed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13988671/