動機

整理常用的grep

match

一般都是用regex去match一部分的字

  • pat當成字串: grep -F
    • 可以當成notepad的Ctrl+F
  • regex不想加backslash: egrep
  • 忽略大小寫: grep -i
  • 整行要match: grep -x,--line-regexp
  • 只match看單字: grep -w, --word-regexp
    • 像pat給test
      • testfrd不會match
      • ,test’會match,因為有符號隔開

show

  • 前i行,後j行都要看: grep -A i -B j
  • 前後各k行: grep -C k
  • 只印沒match的: grep -v
  • 印行號: grep -n
  • 印檔名: grep -H
    • 不印: -h
  • 不要印任何東西: grep -q
    • 通常用在if作條件判斷的時候
  • 不要match binary: grep -I
  • 找所有資料夾的所有檔案: grep -r
    • -R也是遞迴,但會follow symbol link
    • 找code在哪個檔案: grep -Irn

stream

  • 如果對面是stream: grep --line-buffered
    • 像是log有很多東西混在一起的話
      • tail -f /var/log/some.log | grep --line-buffered "srv-name"