例如,如果我想在用diff
预处理两个文件后执行两个文件中的一个sed
,有没有办法在没有临时文件的情况下做到这一点?
我已经尝试过这样的事情并且(如我所料)它没有用:
(sed "$expr" file1; sed "$expr" file2) | diff - -
我在想可能有一种方法可以显式地创建管道或其他东西。
尝试这样做:
diff <(sed "$expr" file1) <(sed "$expr" file2)
这使用Process Substitution。<( )
替换为临时文件名。写入或读取该文件会导致字节通过管道传输到内部的命令。常与文件重定向结合使用:
cmd1 2> >(cmd2)
见
http://mywiki.wooledge.org/ProcessSubstitution
http://mywiki.wooledge.org/BashFAQ/024