Bash

管道到 shell 中的多個文件

  • January 10, 2018

我有一個應用程序會產生大量我不想儲存到磁碟上的數據。該應用程序主要輸出我不想使用的數據,但一組有用的資訊必須拆分為單獨的文件。例如,給定以下輸出:

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"}'

引用自:https://unix.stackexchange.com/questions/97705