grep, egrep, fgrep - 列印匹配給定模式的行
總覽 synopsis
grep [options] pattern [file...]
grep [options] [-e pattern | -f file] [file...]
描述 description
grep :
搜尋以 file 命名的檔案輸入 (或者是標準輸入,如果沒有指定檔名,或者給出的檔名是 - 的話),尋找含有與給定的模式 pattern 相匹配的內容的行。 預設情況下, grep 將把含有匹配內容的行列印出來。
另外,也可以使用兩個變種程式 egrep 和 fgrep 。 egrep 與 grep -e 相同。 fgrep 與 grep -f 相同。
egrep:
擴充套件grep,將模式 pattern 作為乙個擴充套件的正規表示式來解釋
fgrep:
固定grep(fixed grep) ,快速grep (fast grep),它按照字面解釋所有字元。
以上的 \w \w \b 是grep裡面的,不是正則裡面的。
grep 程式的輸入可以來自標準輸入或管道,而不僅僅是檔案,例如:
2.1 標準輸入:
2.2 管道
pa aux | grep 'sshd'
2.3 檔案
grep 'alice' /etc/passwd /etc/shadow /etc/group /etc/gshadow
另外grep命令返回值:
#grep 'tom' /etc/passwd
找到: grep返回的退出狀態為0
沒找到: grep返回的退出狀態為1
找不到指定檔案: grep返回的退出狀態為2
下面的原因是未轉義-之前,grep把-v當選項了。就以為你沒有給模式。
[hujianmei@localhost days_09]$ grep --help | grep '-v'
用法: grep [選項]... pattern [file]...
試用『grep --help』來獲得更多資訊。
[hujianmei@localhost days_09]$ grep --help | grep 'v'
-v, --invert-match select non-matching lines
-v, --version display version information and exit
-a, --text equivalent to --binary-files=text
-i equivalent to --binary-files=without-match
-d, --devices=action how to handle devices, fifos and sockets;
-r, --recursive like --directories=recurse
-r, --dereference-recursive
when is 'always', 'never', or 'auto'
[hujianmei@localhost days_09]$ grep --help | grep '\-v'
-v, --invert-match select non-matching lines
-v, --version display version information and exit
[hujianmei@localhost days_09]$ grep --help | egrep '-v'
用法: grep [選項]... pattern [file]...
試用『grep --help』來獲得更多資訊。
[hujianmei@localhost days_09]$ grep --help | grep '\-v'
-v, --invert-match select non-matching lines
-v, --version display version information and exit
[hujianmei@localhost days_09]$
[hujianmei@localhost days_09]$ 檢視匹配行的前2行^c
[hujianmei@localhost days_09]$ grep -b2 'hujianmei' /etc/passwd
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
hujianmei:x:1000:1000:hujianmei:/home/hujianmei:/bin/bash
[hujianmei@localhost days_09]$ 檢視匹配行的後兩行^c
[hujianmei@localhost days_09]$ 檢視匹配行的上下2行^c
[hujianmei@localhost days_09]$ 用vim開啟時指定跳轉到那一行^c
[hujianmei@localhost days_09]$ vim /etc/passwd +50
[hujianmei@localhost days_09]$
Shell學習15天(for迴圈) 05day
for迴圈本身後面的變數是以空格或者tab分割的,如果是空行,就會忽略空行把空行當成乙個空格。反正for迴圈根本就不會理睬空行。視若無睹。就算指定了for迴圈按照回車分割,也不會理睬空行。例項一 for迴圈批量主機ping 深測.以下 其實很簡單,但是有乙個地方需要特別說明,以前沒有這樣使用過.1 ...
shell指令碼學習(二) grep
1.grep egrep c 列印符合要求的行數 n 在輸出符合要求的行的同時連同行號一起輸出 v 列印不符合要求的行 r 會把目錄下面所有的檔案全部遍歷一遍 i 忽略大小寫 2.例子介紹 grep n root 1.txt grep n v root 1.txt 過濾出所有包含數字行 grep n...
shell學習1 grep學習
grep 相當於vi模式下的 g re p 表示全域性查詢正規表示式 re 並列印結果行。用於在乙個或者多個檔案中查詢某個字元模式 正規表示式 注意 1.如果字元模式中包含空格,則必須加上引號。2.字元模式後面的單詞都被當成檔名,並以空格分開。3.不會對輸入檔案進行任何的修改或這影響。常用引數 c ...