例如,如果我想在使用sed
預處理兩個文件之後執行兩個文件的diff
,有沒有辦法在沒有臨時文件的情況下執行此操作?在bash中,有沒有一種方法有多個管道到一個進程?
我已經試過這樣的事情,並(如我所料),它沒有工作:
(sed "$expr" file1; sed "$expr" file2) | diff - -
我想有可能是一種方式來明確什麼的創建管道。
例如,如果我想在使用sed
預處理兩個文件之後執行兩個文件的diff
,有沒有辦法在沒有臨時文件的情況下執行此操作?在bash中,有沒有一種方法有多個管道到一個進程?
我已經試過這樣的事情,並(如我所料),它沒有工作:
(sed "$expr" file1; sed "$expr" file2) | diff - -
我想有可能是一種方式來明確什麼的創建管道。
嘗試這樣做:
diff <(sed "$expr" file1) <(sed "$expr" file2)
它使用進程替換。 <()
被替換爲臨時文件名。寫入或讀取該文件會導致字節被傳送到內部的命令中。結合常與文件重定向:
cmd1 2> >(cmd2)
見
http://mywiki.wooledge.org/ProcessSubstitution
http://mywiki.wooledge.org/BashFAQ/024
如果您發佈文件,我們可以幫助你做出一個awk命令該做的一切。 – Jotne