Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
当有一个程序在执行时打印几行时stout,我如何将所有这些行重定向到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 |
7zip
stderr
stdout
2>&1 |