
我運行一個應用程式並將輸出通過管道傳輸到grep
.這有效。但是,我希望在兩個螢幕上顯示輸出並寫入檔案。
所以我將grep
結果透過管道傳輸到tee
:
./app | grep something | tee file.txt
然而,這並沒有顯示(或寫入)結果,即使有 100% 的結果(我已經透過兩個正在運行的實例確認了這一點)。
如何 grep 應用程式的輸出、寫入檔案並顯示在螢幕上?
答案1
正如您所寫的,該命令應該可以工作。該命令功能不正確可能有多種原因。
- 應用程式將輸出文字傳送到標準以外的另一個輸出。
- grep指令搜尋的字元鏈輸入錯誤。
案例#1的解決方案
- 手動檢查應用程式是否將所需的文字傳送到要搜尋的輸出。
./app
- 將輸出文字重定向到文件
./app > file.txt
並檢查文件的內容:cat file.txt
- 如果文件不包含所需的文本,則應用程式可能會將輸出發送到錯誤輸出,而不是標準輸出。因此,請嘗試以不同的方式重定向到文件
./app 2 > file.txt
並再次檢查文件的內容:cat file.txt
- 如果這次文件內容正確的話,解決方法就很簡單了。您只需將錯誤輸出重定向到標準輸出即可。
./app 2>&1 | grep "something" | tee file.txt
案例#2的解決方案
- 仔細檢查您用作搜尋模式的字串。將其括在引號或撇號中,以排除通配符、$variablename 變數、正規表示式等的隨機誤解。
- 首先使用 grep 測試僅由不會被誤解的字母或數字組成的非常簡單的字串的搜尋。