例如,如果我想在使用diff
预处理这两个文件后执行sed
两个文件,有没有办法在没有临时文件的情况下执行此操作?
我尝试过这样的事情(正如我所料)它不起作用:
(sed "$expr" file1; sed "$expr" file2) | diff - -
我当时认为可能有一种方法可以明确地创建管道或其他东西。
答案 0 :(得分:5)
尝试这样做:
diff <(sed "$expr" file1) <(sed "$expr" file2)
这使用流程替换。 <( )
被临时文件名替换。写入或读取该文件会导致字节被传送到内部命令。通常与文件重定向结合使用:
cmd1 2> >(cmd2)
请参阅
http://mywiki.wooledge.org/ProcessSubstitution
http://mywiki.wooledge.org/BashFAQ/024