當(dāng)我們需要查找一些文件時(shí)邦邦,需要使用命令grep,根據(jù)模式搜索文本,并將符合模式的文本顯示出來贺归。
用法:grep [選項(xiàng)] ?所要查找的模式 ?文件……
只要模式不涉及變量的使用,單雙引號(hào)都可以
選項(xiàng):
-i:不分大小寫
--color:對(duì)模式加顏色
-v:反向查找断箫,顯示沒有被模式匹配到的行
-o:只顯示被模式匹配到的字符串
正則表達(dá)式
正則表達(dá)式是由一些不表示自身字母意義的元字符組成
元字符(正常情況下運(yùn)行在貪婪模式拂酣,盡可能長的匹配):
.:表示任意單個(gè)字符
文字通配符globbing的字符集合在此也適用,如:grep ‘[[:digit:]]$’/etc/passwd
次數(shù)匹配:
*:匹配前面一個(gè)字符任意次
.*:匹配任意長度的任意字符瑰枫,比如:a.*b表示a開頭踱葛,b結(jié)尾中間為任意字符,任意長度的文件光坝,相當(dāng)于文件查找時(shí)的“*”尸诽。
\?:匹配前面的字符一次或0次,即前面的模式可有可無盯另。
\{m,n\}:匹配前面的字符至少m次性含,最多n次≡Ч撸“\”為轉(zhuǎn)義字符商蕴,防止字符被shell識(shí)別,如a.\{1,3\}b芝发,表示a,b之間至少有一個(gè)字符绪商,最多3個(gè)。
位置錨定:
^:錨定行首辅鲸,表示后面的字符必須在行首
$:錨定行尾格郁,表示前面的字符必須出現(xiàn)在行尾
^$:空白行
\<或者\(yùn)b:錨定詞首,其后面的字符必須在單詞的首部出現(xiàn)
\>或者\(yùn)b:錨定詞尾,其前面的字符必須在單詞尾部
分組:
\(\):向后引用
????? \1:引用第一個(gè)左括號(hào)以及與其對(duì)應(yīng)的右括號(hào)之間所包含的內(nèi)容
????? \2:引用第二個(gè)左括號(hào)以及與其對(duì)應(yīng)的右括號(hào)之間所包含的內(nèi)容
比如:grep ‘\(l..e\).*\1’?/home/test3.txt,表示在文件中找l開頭e結(jié)尾的單詞例书,并且間隔任意字符后锣尉,再次以相同單詞結(jié)尾的字段的行。