1. grep:

  1. 所在系統:linux redhat7.0 路徑:/bin/grep

  2. libc.so.6 => /lib/libc.so.6 (0x4002c000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

  3. grep命令是提供給使用者來指定要列印的資料,執行時他會在指定的檔案中搜尋符合

指定

樣版(PATTERN)的字串,並將該符合字串所在之資料列內容列印出

  1. -A NUM,--after-context=NUM 除了列出符合行之外,並且列出後NUM行。
    -a 或--text
    grep原本是搜尋文字檔,若拿二進位的檔案作為搜尋的目標, 則會顯示如下的訊息: Binary file 二進位檔名 matches 然後結束。 若加上-a參數則可將二進位檔案視為文字檔案搜尋, 相當於--binary-files=text這個參數。

    -B NUM,--before-context=NUM

    與 -A NUM 相對,但這此參數是顯示除符合行之外 並顯示在它之前的NUM行。

    -C [NUM], -NUM, --context[=NUM]

    列出符合行之外並列出上下各NUM行,預設值是2。

    -b, --byte-offset

    列出樣式之前的內文總共有多少byte

    --binary-files=TYPE

    此參數TYPE預設為binary(二進位),若以普通方式搜尋,只有2種結果: 1.若有符合的地方:顯示Binary file 二進位檔名 matches 2.若沒有符合的地方:什麼都沒有顯示。

    若TYPE為without-match,遇到此參數, grep會認為此二進位檔案沒有包含任何搜尋樣式,與-I 參數相同。

    若TPYE為text, grep會將此二進位檔視為text檔案,與-a 參數相同。

    警告: --binary-files=text 若輸出為終端機,可能會產生一些不必要的輸出。

    -c, --count
    不顯示符合樣式行,只顯示符合的總行數。 若再加上-v,--invert-match,參數顯示不符合的總行數。

    -d ACTION, --directories=ACTION

    若輸入的檔案是一個資料夾,使用ACTION去處理這個資料夾。 預設ACTION是read(讀取),也就是說此資料夾會被視為一般的檔案; 若ACTION是skip(略過),資料夾會被grep略過: 若ACTION是recurse(遞迴),grep會去讀取資料夾下所有的檔案, 此相當於-r 參數。

    -E, --extended-regexp
    採用規則表示式去解釋樣式。

    -e PATTERN, --regexp=PATTERN
    把樣式做為一個partern,通常用在避免partern用-開始。

    -f FILE, --file=FILE
    事先將要搜尋的樣式寫入到一個檔案,一行一個樣式。 然後採用檔案搜尋。
    空的檔案表示沒有要搜尋的樣式,因此也就不會有任何符合。

    -G, --basic-regexp
    將樣式視為基本的規則表示式解釋。(此為預設)

    -H, --with-filename
    在每個符合樣式行前加上符合的檔案名稱,若有路徑會顯示路徑。

    -h, --no-filename
    與-H參數相類似,但在輸出時不顯示路徑。

    --help
    產生簡短的help訊息。

    -I

    grep會強制認為此二進位檔案沒有包含任何搜尋樣式, 與--binary-files=without-match參數相同。

    -i, --ignore-case

    忽略大小寫,包含要搜尋的樣式及被搜尋的檔案。

    -L, --files-without-match

    不顯示平常一般的輸出結果,反而顯示出沒有符合的檔案名稱。

    -l, --files-with-matches

    不顯示平常一般的輸出結果,只顯示符合的檔案名稱。

    --mmap

    如果可能,使用mmap系統呼叫去讀取輸入,而不是預設的read系統呼叫。 在某些狀況,--mmap 能產生較好的效能。 然而,--mmap 如果運作中檔案縮短,或I/O 錯誤發生時, 可能造成未定義的行為(包含core dump),。

    -n, --line-number

    在顯示行前,標上行號。

    -q, --quiet, --silent

    不顯示任何的一般輸出。請參閱-s或--no-messages

    -r, --recursive

    遞迴地,讀取每個資料夾下的所有檔案,此相當於 -d recsuse 參數。

    -s, --no-messages

    不顯示關於不存在或無法讀取的錯誤訊息。

    -V, --version

    顯示出grep的版本號到標準錯誤。
    當您在回報有關grep的bugs時,grep版本號是必須要包含在內的。

    -v, --invert-match

    搜尋樣式行之外的全部。

    -w, --word-regexp

    將搜尋樣式視為一個字去搜尋,完全符合該"字"的行才會被列出。

    -x, --line-regexp

    將搜尋樣式視為一行去搜尋,完全符合該"行"的行才會被列出。

  2. 範例一: [root@intel4 Erif]# ls -l |grep haha -rw-rw-r-- 1 root root 5 10月 5 11:45 haha [root@intel4 Erif]# ls -l |grep -i haha -rw-rw-r-- 1 root root 5 10月 5 11:45 haha -rw-rw-r-- 1 root root 9 10月 5 11:46 Haha -rw-rw-r-- 1 root root 9 10月 5 11:46 HAHA 加-i參數可以忽略大小寫

範例二:

  [root@intel4 /root]# ls -l grep -n RH      
  3:-rwx------ 1 root root 10152 9月 5 18:19 BSDRHL*
  11:-rwx------ 1 root root 45323 9月 1 23:30 RHL974262492*
  12:-rwxr-xr-x 1 root root 20596 9月 1 23:32
RHL974262492.bk*        
  加-n參數可以在顯示行前,標上行號      


最常見的就是配合著ls來使用,或者rpm -qa來看自己裝了哪些package 如:

[root@intel4 /root]# ls l |grep client  
-rwxrwxrwx 1 root
client20010726.tgz*
root 12517588 7月 26 01:11
-rwxrwxrwx 1 root root 9623331 5月 29 00:08 newclient.tgz*

[root@intel4 /root]# rpm -qa |grep XFree86 XFree86-ISO8859-2-75dpi-fonts-4.0.2-7CLE XFree86-Xvfb-4.0.2-7CLE
XFree86-doc-4.0.2-7CLE
XFree86-Mach64-3.3.6-33CLE
XFree86-libs-4.0.2-7CLE
XFree86-4.0.2-7CLE
XFree86-100dpi-fonts-4.0.2-7CLE
XFree86-twm-4.0.2-7CLE
XFree86-tools-4.0.2-7CLE
XFree86-xf86cfg-4.0.2-7CLE
XFree86-xfs-4.0.2-7CLE
XFree86-cyrillic-fonts-4.0.2-7CLE
XFree86-xdm-4.0.2-7CLE
XFree86-FBDev-3.3.6-33CLE
XFree86-devel-4.0.2-7CLE
XFree86-75dpi-fonts-4.0.2-7CLE
XFree86-V4L-4.0.2-7CLE
XFree86-ISO8859-2-100dpi-fonts-4.0.2-7CLE XFree86-Xnest-4.0.2-7CLE