作業系統三劍客命令(一) grep

2021-09-29 18:22:13 字數 4200 閱讀 9080

linux系統中grep命令是一種強大的文字搜尋工具,它能使用正規表示式搜尋文字,

並把匹配的行列印出來。grep全稱是global regular expression print,

表示全域性正規表示式版本,它的使用許可權是所有使用者。

grep [options]
主要引數:

-a或--text

不要忽略二進位制的資料。

-a《顯示列數》或--after-context=《顯示列數》

除了顯示符合範本樣式的那一列之外,並顯示該列之後的內容。

-b或--byte-offset

在顯示符合範本樣式的那一列之前,標示出該列第乙個字元的位編號。

-b《顯示列數》或--before-context=《顯示列數》

除了顯示符合範本樣式的那一列之外,並顯示該列之前的內容。

-c或--count

計算符合範本樣式的列數。

-c《顯示列數》或--context=《顯示列數》或-《顯示列數》

除了顯示符合範本樣式的那一列之外,並顯示該列之前後的內容。

-d《進行動作》或--directories=《進行動作》

當指定要查詢的是目錄而非檔案時,必須使用這項引數,

否則grep指令將回報資訊並停止動作。

-e《範本樣式》或--regexp=《範本樣式》

指定字串做為查詢檔案內容的範本樣式。

-e或--extended-regexp

將範本樣式為延伸的普通表示法來使用。

-f《範本檔案》或--file=《範本檔案》

指定範本檔案,其內容含有乙個或多個範本樣式,讓grep查詢符合範本條件的檔案

內容,格式為每列乙個範本樣式。

-f或--fixed-regexp

將範本樣式視為固定字串的列表。

-g或--basic-regexp

將範本樣式視為普通的表示法來使用。

-h或--no-filename

在顯示符合範本樣式的那一列之前,不標示該列所屬的檔名稱。

-h或--with-filename

在顯示符合範本樣式的那一列之前,表示該列所屬的檔名稱。

-i或--ignore-case

忽略字元大小寫的差別。

-l或--file-with-matches

列出檔案內容符合指定的範本樣式的檔名稱。

-l或--files-without-match

列出檔案內容不符合指定的範本樣式的檔名稱。

-n或--line-number

在顯示符合範本樣式的那一列之前,標示出該列的列數編號。

-q或--quiet或--silent

不顯示任何資訊。

-r或--recursive

此引數的效果和指定「-d recurse」引數相同。

-s或--no-messages

不顯示錯誤資訊。

-v或--revert-match 反轉查詢。

-v或--version 顯示版本資訊。

-w或--word-regexp 只顯示全字符合的列。

-x或--line-regexp 只顯示全列符合的列。

-y 此引數的效果和指定「-i」引數相同。

^  --- 匹配以什麼開頭資訊   ^***

grep "^i" test.txt

練習: 找出檔案中以大寫字母i開頭的資訊

$ --- 匹配以什麼結尾資訊

grep "m$" test.txt

練習: 找出空行資訊

grep "^$" 檔案

練習: 排除空行不顯示

[root@linux67 oldboy]# grep -v "^$" test.txt

i am oldboy teacher!

i teach linux.

i like badminton ball ,billiard ball and chinese chess!

my blog is

our site is

my qq num is 49000448.

not 4900000448.

my god ,i am not oldbey,but oldboy!

練習: 找出以m開頭 和 以m結尾行

[root@linux67 oldboy]# grep "^m.*m$" test.txt

mmmy blog is

^$ 表示空行資訊

. 匹配任意乙個且只有乙個字元

grep sed awk 處理檔案時, 會按照每一行進行處理檔案

[root@linux67 oldboy]# grep "." test.txt -oia

mold

[root@linux67 oldboy]# grep ".$" test.txt

i am oldboy teacher!

i teach linux.

mmi like badminton ball ,billiard ball and chinese chess!

my blog is

our site is

my qq num is 49000448.

not 4900000448.

my god ,i am not oldbey,but oldboy

* 匹配星號前面乙個字元連續出現0次或者多次情況

[root@linux67 oldboy]# grep "o*" test01.txt

gdgod

good

goood

gooood

[root@linux67 oldboy]# grep "0*" test.txt

i am oldboy teacher!

i teach linux.

mmi like badminton ball ,billiard ball and chinese chess!

my blog is

our site is

my qq num is 49000448.

not 4900000448.

my god ,i am not oldbey,but oldboy!

.* 匹配所有內容

匹配多個字元資訊

grep "[0-9]" test.txt

等價於:

grep "0" test.txt

grep "1"

[root@linux67 oldboy]# grep "[0-9a-za-z]" test.txt

i am oldboy teacher!

i teach linux.

mmi like badminton ball ,billiard ball and chinese chess!

my blog is

our site is

my qq num is 49000448.

not 4900000448.

my god ,i am not oldbey,but oldboy!

[^xx] 將匹配多個字元進行取反

[root@linux67 oldboy]# grep "[^0-9a-za-z]" test.txt

i am oldboy teacher!

i teach linux.

i like badminton ball ,billiard ball and chinese chess!

my blog is

our site is

my qq num is 49000448.

not 4900000448.

my god ,i am not oldbey,but oldboy!

\ 轉義符號

1) 將有意義資訊變得沒有意義

[root@linux67 oldboy]# grep "\.$" test.txt

i teach linux.

my qq num is 49000448.

not 4900000448.

2) 將沒有意義字元變得有意義

\n \r --- 換行符

\t

文字三劍客 grep命令

grep,標準grep命令,支援基本和擴充套件的正規表示式 egrep,擴充套件grep命令,其實和grep e等價,支援基本和擴充套件的正規表示式 fgrep,快速grep命令,其實和grep f等價,不支援正規表示式,按照字串表面意思進行匹配 格式 grep 引數 常用引數 root local...

三劍客之GREP

grep基本用法 檢索條件關鍵字工具 grep options pattern file.color 高亮顯示匹配到的字串 v 顯示不能被pattern匹配到的 i 忽略字元大小寫 o 僅顯示匹配到的字串 q 靜默模式,不輸出任何資訊 a after,匹配到的後 行 b before,匹配到的前 行...

三劍客之grep

1 grep linux系統中grep命令是一種強大的文字搜尋工具,它能使用正規表示式搜尋文字,並把匹 配的行列印出來。grep全稱是global regular expression print,表示全域性正規表示式版本,它的使用許可權是所有使用者。2 grep主要引數3 grep實用案例 1 搜...