linux grep命令用於查詢檔案裡符合條件的字串。
grep指令用於查詢內容包含指定的範本樣式的檔案,如果發現某檔案的內容符合所指定的範本樣式,預設grep指令會把含有範本樣式的那一列顯示出來。若不指定任何檔名稱,或是所給予的檔名為"-",則grep指令會從標準輸入裝置讀取資料。
grep [options] 『pattern』 filename
-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最簡單的用法,匹配乙個詞:grep word filename
從多個檔案裡匹配:grep word filename1 filenam2 filename3
能夠使用正規表示式匹配:grep -e pattern f1 f2 f3...
-o僅僅列印匹配的字元,例如以下所看到的:
$ echo this is a line. | grep -e -o 「[a-z]*.」
line.
列印除匹配行之外的其它行,使用-v
$ echo -e "1\n2\n3\n4" | grep -v -e "[1-2]"
34
統計匹配字串的行數。使用-c
$ echo -e "1111\n2222" | grep -e "[1-2]" -c
2
假設我們統計字串模式匹配的次數。能夠結合-o和-c。例如以下:
$ echo -e "1111\n2222" | grep -o -e "[1-2]" | wc -l
8
假設須要顯示行號,能夠開啟-n,例如以下:
$ echo -e "1111\n2222\n33333\n44444" | grep -n -e "3"
3:33333
-b選項能夠列印出匹配的字串想對於其所在的行起始位置的偏移量(從0開始)。通常配合-o使用,例如以下:
$ echo "0123456789" | grep -b -o 4
4:4
當字串在多個檔案裡匹配時。-l選項將僅僅列印檔案名稱
-l與-l相對。僅僅列印不匹配的檔名稱
$ cat test1.txt
linux
isfun
$ cat test2.txt
a very
popular
os,linux
$ cat test3.txt
what
thefxxk
$ grep -l linux test1.txt test2.txt test3.txt
test1.txt
test2.txt
$ grep -l linux test1.txt test2.txt test3.txt
test3.txt
開啟遞迴搜尋功能
$ grep -n -r linux .
./test2.txt:5:linux
./test1.txt:1:linux
忽略大寫和小寫:-i
$ echo "hello world" | grep -i "hello"
hello world
匹配多個字串模式
$ echo "this is a line." | grep -e "this" -e "is" -e "line" -o
this
isline
linux grep命令詳解
linux grep命令 1.作用 linux系統中grep命令是一種強大的文字搜尋工具,它能使用正規表示式搜尋文字,並把匹 配的行列印出來。grep全稱是global regular expression print,表示全域性正規表示式版本,它的使用許可權是所有使用者。2.格式 grep opt...
linux grep命令詳解
linux grep命令 1.作用 linux系統中grep命令是一種強大的文字搜尋工具,它能使用正規表示式搜尋文字,並把匹 配的行列印出來。grep全稱是global regular expression print,表示全域性正規表示式版本,它的使用許可權是所有使用者。2.格式 grep opt...
linux grep命令詳解
grep命令是linux下的行過濾工具,其引數繁多,下面就一一介紹個個引數的作用,希望對大家有所幫助。grep print lines matching a pattern 將符合樣式的該行列出 語法 grep options pattern file.grep用以在file內文中比對相對應的部分,...