Bash
管道到 shell 中的多個文件
我有一個應用程序會產生大量我不想儲存到磁碟上的數據。該應用程序主要輸出我不想使用的數據,但一組有用的資訊必須拆分為單獨的文件。例如,給定以下輸出:
JUNK JUNK JUNK JUNK A 1 JUNK B 5 C 1 JUNK
我可以像這樣執行應用程序三遍:
./app | grep A > A.out ./app | grep B > B.out ./app | grep C > C.out
這會讓我得到我想要的,但它會花費太長時間。我也不想將所有輸出轉儲到單個文件並對其進行解析。
有什麼方法可以將上面顯示的三個操作組合在一起,這樣我只需要執行一次應用程序就可以得到三個單獨的輸出文件?
如果你有三通
./app | tee >(grep A > A.out) >(grep B > B.out) >(grep C > C.out) > /dev/null
(從這裡)
(關於程序替換)
您可以使用
awk
./app | awk '/A/{ print > "A.out"}; /B/{ print > "B.out"}; /C/{ print > "C.out"}'