Grep 應用程式的輸出,顯示到螢幕並寫入檔案?

Grep 應用程式的輸出,顯示到螢幕並寫入檔案?

我運行一個應用程式並將輸出通過管道傳輸到grep.這有效。但是,我希望在兩個螢幕上顯示輸出並寫入檔案。

所以我將grep結果透過管道傳輸到tee

./app | grep something | tee file.txt

然而,這並沒有顯示(或寫入)結果,即使有 100% 的結果(我已經透過兩個正在運行的實例確認了這一點)。

如何 grep 應用程式的輸出、寫入檔案並顯示在螢幕上?

答案1

正如您所寫的,該命令應該可以工作。該命令功能不正確可能有多種原因。

  1. 應用程式將輸出文字傳送到標準以外的另一個輸出。
  2. grep指令搜尋的字元鏈輸入錯誤。

案例#1的解決方案

  1. 手動檢查應用程式是否將所需的文字傳送到要搜尋的輸出。./app
  2. 將輸出文字重定向到文件./app > file.txt並檢查文件的內容:cat file.txt
  3. 如果文件不包含所需的文本,則應用程式可能會將輸出發送到錯誤輸出,而不是標準輸出。因此,請嘗試以不同的方式重定向到文件
    ./app 2 > file.txt並再次檢查文件的內容:cat file.txt
  4. 如果這次文件內容正確的話,解決方法就很簡單了。您只需將錯誤輸出重定向到標準輸出即可。
./app 2>&1 | grep "something" | tee file.txt

案例#2的解決方案

  1. 仔細檢查您用作搜尋模式的字串。將其括在引號或撇號中,以排除通配符、$variablename 變數、正規表示式等的隨機誤解。
  2. 首先使用 grep 測試僅由不會被誤解的字母或數字組成的非常簡單的字串的搜尋。

相關內容