Shell學習15天(grep詳解) 09day

2021-10-03 01:32:35 字數 3981 閱讀 8407

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 ...