在bash中,是否有一种方法可以将多个管道连接到一个进程?

时间:2013-09-25 18:37:59

标签: bash sed pipe

例如,如果我想在使用diff预处理这两个文件后执行sed两个文件,有没有办法在没有临时文件的情况下执行此操作?

我尝试过这样的事情(正如我所料)它不起作用:

(sed "$expr" file1; sed "$expr" file2) | diff - -

我当时认为可能有一种方法可以明确地创建管道或其他东西。

1 个答案:

答案 0 :(得分:5)

尝试这样做:

diff <(sed "$expr" file1) <(sed "$expr" file2)

这使用流程替换<( )被临时文件名替换。写入或读取该文件会导致字节被传送到内部命令。通常与文件重定向结合使用:

cmd1 2> >(cmd2)

请参阅
http://mywiki.wooledge.org/ProcessSubstitution
http://mywiki.wooledge.org/BashFAQ/024