Linux grep 要過濾多個字串

Linux grep 要過濾字串,可以使用 -v 來過濾,例如:

  • grep -v string filename

若要過濾多個字串的話,偷懶就多串幾個 | 就好,例如:

  • grep -v string filename | grep -v string2 | grep -v string3

若不要用 Pipe(|),想要直接一行 grep 解決,要搭配 -e 操作,例如:

  • grep -v -e string -e string2 -e string3 filename

Linux grep 找出此字串在檔案的第幾行

若一個檔案很大,想要知道處理進度,就會需要知道目前這個字串於此檔案的何處~

所以可以使用 grep 找出目前處理到第幾行,在用 wc -l 看檔案的總行數,就可以知道目前處理到幾%的進度

閱讀全文〈Linux grep 找出此字串在檔案的第幾行〉

Linux 解決 grep pipe 要 4k 才會印出來

tail -F 一直把 Log 撈出來,然後 grep 出想要的內容,在即時打出來

但是,發現打出 Log 的時間並不是即時打出來的,而會累積一段時間後才打出來,要怎麼能即時將內容打出來呢?

閱讀全文〈Linux 解決 grep pipe 要 4k 才會印出來〉

Linux grep 結果不要秀 路徑 與 檔名

Linux 若想要多檔案、目錄要 grep 內容,可以使用 -r,但是出來的結果都會有檔名、路徑,不要呈現要怎麼做呢?

Linux grep 結果不要秀 路徑 與 檔名

Linux 的 grep 通常後面會 Pipe 接很多的處理,結果有檔名、路徑等資料,反而會造成後續的困擾。

可以使用 -h 來決定檔名路徑是否要呈現

  • -h, --no-filename
  • -H, --with-filename
    • 通常使用 -H 的話,還會搭配 -n 顯示行數
  • 範例:grep -r -h "match keyword" *

Linux 使用 pgrep 找出 Processes 所有 pid

平常要找某 Process (Ex: Apache) 的 Pid,都是 ps aux | grep apache 然後在搭配 awk 來把 pid 撈出來。

上述方式撈出來的這些 pid 常常會有一個是 ps 的 pid,而且撈的方式還蠻辛苦的~ 使用 pgrep 可以比較輕鬆解決~

閱讀全文〈Linux 使用 pgrep 找出 Processes 所有 pid〉

Linux grep 列出抓到內容的前後幾行內容

Linux 使用 grep 找資料很方便,再找程式碼的時候,除了找到的那一行外,特別需要在那行的前後幾行都列出來,要怎麼做呢?

閱讀全文〈Linux grep 列出抓到內容的前後幾行內容〉