linux - 将多个输出发送到 sed

标签 linux bash

当有一个程序在执行时在 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/

相关文章:

linux - 无法将带有大括号扩展操作的字符串解析为命令

linux - UNIX 中的算术语法错误

linux - 升级后的 Redhat Linux 内核在启动时出现内核 panic

c - 处理用户空间和内核之间的buf

linux - sqlmap语法工作期间不要问任何问题

bash - 带有存储在文件中的通配符的 grep

android - 在 sh 中为 Android 定义一个数组

bash - 防止 SIGINT 在 bash 脚本中关闭子进程

linux - 虽然导出 gg 我得到了未绑定(bind)的变量 gg

linux - 在 debian wheezy 上编译新内核