1.作用
linux
系統中grep
命令是一種強大的文字搜尋工具,它能使用正規表示式搜尋文字,並把匹配的行列印出來。
grep
全稱是global regular expression print
,表示全域性正規表示式版本,它的使用許可權是所有使用者。 2.
格式 grep[options] 3.
主要引數
[options]
主要引數: -
c:只輸出匹配行的計數。 -
i:不區分大小寫
(只適用於單字元)。
-h:查詢多檔案時不顯示檔名。 -
l:查詢多檔案時只輸出包含匹配字元的檔名。 -
n:顯示匹配行及行號。 -
s:不顯示不存在或無匹配文字的錯誤資訊。 -
v:顯示不包含匹配文字的所有行。
pattern
正規表示式主要引數: \
:忽略正規表示式中特殊字元的原有含義。 ^
:匹配正規表示式的開始行。
$: 匹配正規表示式的結束行。
\<
:從匹配正規表示式的行開始。
\>
:到匹配正規表示式的行結束。
[ ]:單個字元,如
[a]即
a符合要求。
[ - ]
:範圍,如
[a-z],即a
、b、c
一直到z
都符合要求。
。:所有的單個字元。 *
:有字元,長度可以為0。
4.grep
命令使用簡單例項
$ grep 『test』d*
顯示所有以
d開頭的檔案中包含
test
的行。
$ grep 『test』aa bb cc
顯示在aa,
bb,cc檔案中匹配
test
的行。
$ grep『[a-z]\』 aa
顯示所有包含每個字串至少有
5個連續小寫字元的字串的行。
$ grep『w\(es\)t.*\1′ aa 如果
west
被匹配,則
es就被儲存到記憶體中,並標記為
1,然後搜尋任意個字元
(.*)
,這些字元後面緊跟著另外乙個
es(\1)
,找到就顯示該行。如果用
egrep
或grep -e
,就不用
」\」號進行轉義,直接寫成
』w(es)t.*\1′
就可以了。
5.grep
命令使用複雜例項
假設您正在
』/usr/src/linux/doc』
目錄下搜尋帶字串
』magic』
的檔案:
$ grep magic/usr/src/linux/doc/*
sysrq.txt:* how do i enable the magic sysrq key?
sysrq.txt:* how do i use the magic sysrq key?
其中檔案
』sysrp.txt』
包含該字串,討論的是
sysrq
的功能。
預設情況下,
』grep』
只搜尋當前目錄。如果此目錄下有許多子目錄,
』grep』
會以如下形式列出:
grep: sound: is a directory
這可能會使
』grep』
明確要求搜尋子目錄:
grep -r
或忽略子目錄:
grep -d skip
如果有很多輸出時,您可以通過管道將其轉到
』less』
上閱讀:
$ grep magic /usr/src/linux/documentation/* | less
這樣,您就可以更方便地閱讀。
有一點要注意,您必需提供乙個檔案過濾方式
(搜尋全部檔案的話用
*)。如果您忘了,
』grep』
會一直等著,直到該程式被中斷。如果您遇到了這樣的情況,按
,然後再試。
下面還有一些有意思的命令列引數:
grep -i pattern files
:不區分大小寫地搜尋。預設情況區分大小寫,
grep -l pattern files
:只列出匹配的檔名,
grep -l pattern files
:列出不匹配的檔名,
grep -w pattern files
:只匹配整個單詞,而不是字串的一部分
(如匹配
』magic』
,而不是
』magical』)
,grep -c number pattern files
:匹配的上下文分別顯示
[number]
行,grep pattern1 | pattern2 files
:顯示匹配
pattern1
或pattern2
的行,grep pattern1 files | grep pattern2
:顯示既匹配
pattern1
又匹配pattern2
的行。
這裡還有些用於搜尋的特殊符號:
\<
和\>
分別標註單詞的開始與結尾。
例如:grep man *
會匹配『batman』
、』manic』
、』man』
等,grep 『\匹配
』manic』
和』man』
,但不是
』batman』
,grep 『\』
只匹配』man』
,而不是
』batman』
或』manic』
等其他的字串。
『^』:指匹配的字串在行首,
『$』:指匹配的字串在行尾,
示例:[alm@21sq-bbkz01 ~]$ grep "log" mv.txt
~/svnedge/svnbak/log/20130418161653.svnbak.log
~/svnedge/svnbak/svnsync133.log
[alm@21sq-bbkz01 ~]$ grep "log" mv.txt |awk -f '.' ''
loglog
[alm@21sq-bbkz01 ~]$ grep "log" mv.txt |awk -f '.' '' |uniq
log
Linux中grep命令的用法
1.作用 linux系統中grep命令是一種強大的文字搜尋工具,它能使用正規表示式搜尋文字,並把匹 配的行列印出來。grep全稱是global regular expression print,表示全域性正規表示式版本,它的使用許可權是所有使用者。2.格式 grep options 3.主要引數 o...
linux中grep命令的用法
作為linux中最為常用的三大文字 awk,sed,grep 處理工具之一,掌握好其用法是很有必要的。首先談一下grep命令的常用格式為 grep 選項 模式 檔案 grep家族總共有三個 grep,egrep,fgrep。常用選項 e 開啟擴充套件 extend 的正規表示式。i 忽略大小寫 ig...
Linux中grep命令的用法
作為linux中最為常用的三大文字 awk,sed,grep 處理工具之一,掌握好其用法是很有必要的。首先談一下grep命令的常用格式為 grep 選項 模式 檔案 grep家族總共有三個 grep,egrep,fgrep。常用選項 e 開啟擴充套件 extend 的正規表示式。i 忽略大小寫 ig...