例如,如果我想diff在预处理它们之后执行两个文件中的一个sed,有没有办法在没有临时文件的情况下执行此操作?
我尝试过这样的事情(正如我所料)它不起作用:
(sed "$expr" file1; sed "$expr" file2) | diff - -
Run Code Online (Sandbox Code Playgroud)
我在想可能有一种方法可以明确地创建管道或其他东西.
试着这样做:
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