linux grep 詳細深入學習

2021-09-10 21:49:02 字數 2806 閱讀 8567

學習原文:

grep命令的常用格式為:grep  [選項]  」模式「  [檔案]

grep 三兄弟:grep egrep fgrep

常用選項:

-e :開啟擴充套件(extend)的正規表示式。

-i :忽略大小寫(ignore case)。

-v :反過來(invert),只列印沒有匹配的,而匹配的反而不列印。

-n :顯示行號

-w :被匹配的文字只能是單詞,而不能是單詞中的某一部分,如文字中有liker,而我搜尋的只是like,就可以使用-w選項來避免匹配liker

-c :顯示總共有多少行被匹配到了,而不是顯示被匹配到的內容,注意如果同時使用-cv選項是顯示有多少行沒有被匹配到。

-o :只顯示被模式匹配到的字串(有結果字串就顯示幾個字串,配合wc -l可以統計出現的次數)。

--color :將匹配到的內容以顏色高亮顯示。

-a  n:顯示匹配到的字串所在的行及其後n行,after

-b  n:顯示匹配到的字串所在的行及其前n行,before

-c  n:顯示匹配到的字串所在的行及其前後各n行,context

直接輸入要匹配的字串,這個可以用fgrep(fast grep)代替來提高查詢速度

基本正規表示式的使用:

匹配字元:

. :任意乙個字元。

[abc] :表示匹配乙個字元,這個字元必須是abc中的乙個。

[a-za-z] :表示匹配乙個字元,這個字元必須是a-z或a-z這52個字母中的乙個。

[^123] :匹配乙個字元,這個字元是除了1、2、3以外的所有字元。

對於一些常用的字符集,系統做了定義:

[a-za-z] 等價於 [[:alpha:]]

[0-9] 等價於 [[:digit:]]

[a-za-z0-9] 等價於 [[:alnum:]]

tab,space 等空白字元 [[:space:]]

[a-z] 等價於 [[:upper:]]

[a-z] 等價於 [[:lower:]]

標點符號 [[:punct:]]

匹配次數:

\ :匹配其前面出現的字元至少m次,至多n次。

\? :匹配其前面出現的內容0次或1次,等價於\。

* :匹配其前面出現的內容任意次,等價於\,所以 ".*" 表述任意字元任意次,即無論什麼內容全部匹配。

位置錨定:

^ :錨定行首

$ :錨定行尾。技巧:"^$"用於匹配空白行。

\b或\

\b或\>:錨定單詞的詞尾。如"\blike\b"不會匹配alike和liker,只會匹配like

\b :與\b作用相反。

分組及引用:

\(string\) :將string作為乙個整體方便後面引用

\1 :引用第1個左括號及其對應的右括號所匹配的內容。

\2 :引用第2個左括號及其對應的右括號所匹配的內容。

\n :引用第n個左括號及其對應的右括號所匹配的內容。

擴充套件的(extend)正規表示式(注意要使用擴充套件的正規表示式要加-e選項,或者直接使用egrep):

匹配次數

* :和基本正規表示式一樣

? :基本正規表示式是\?,這裡沒有\。

:相比基本正規表示式也是沒有了\。

+ :匹配其前面的字元至少一次,相當於。

位置錨定:和基本正規表示式一樣。

分組及引用

(string) :相比基本正規表示式也是沒有了\。

\1 :引用部分和基本正規表示式一樣。

\n :引用部分和基本正規表示式一樣。

或者

a|b :匹配a或b,注意a是指 | 的左邊的整體,b也同理。比如 c|cat 表示的是 c或cat,而不是cat或cat,如果要表示cat或cat,則應該寫為 (c|c)at 。記住(string)除了用於引用還用於分組。

注1:預設情況下,正規表示式的匹配工作在貪婪模式下,也就是說它會盡可能長地去匹配,比如某一行有字串 abacb,如果搜尋內容為 "a.*b" 那麼會直接匹配 abacb這個串,而不會只匹配ab或acb。

注2:所有的正則字元,如 [ 、* 、( 等,若要搜尋 * ,而不是想把 * 解釋為重複先前字元任意次,可以使用 \* 來轉義。

UIApplication深入學習

新建乙個任意型別的ios應用工程,加入我們在class prefix輸入是tc,我們可以看到工程中生成乙個類 在main函式中,autoreleasepool 函式中 說明 當應用程式將要入非活動狀態執行,在此期間,應用程式不接收訊息或事件。比如來 了。說明 當應用程式入活動狀態執行,這個剛好跟上面...

深入學習CSS

什麼是css?在之前的這篇文章中已經介紹了初步的介紹,詳細請看 div加css進一步講解了css中的內容,先總結如下圖 其實在實際開發中,我們通常採用是外部樣式的匯入,這樣做的好處是對於很對有同樣設計樣式的頁面可以實現樣式的共享,這樣我們不僅僅可以節省了大量的時間,並且也方便我們可以靈活的呼叫的樣式...

block深入學習

block的宣告和使用看上一節就行了。本章主要講block內部的實現過程及原理。block的定義和函式指標非常相似 對比一下 block定義 void someblock 函式指標定義 void functionpionter void functionname 當然區別還是有的,block的返回型...