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

Mat*_*att 3 bash sed pipe

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

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

(sed "$expr" file1; sed "$expr" file2) | diff - -
Run Code Online (Sandbox Code Playgroud)

我在想可能有一种方法可以明确地创建管道或其他东西.

Gil*_*not 5

试着这样做:

diff <(sed "$expr" file1) <(sed "$expr" file2)
Run Code Online (Sandbox Code Playgroud)

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

cmd1 2> >(cmd2)
Run Code Online (Sandbox Code Playgroud)


http://mywiki.wooledge.org/ProcessSubstitution
http://mywiki.wooledge.org/BashFAQ/024