正規表示式,萬用字元

2021-07-11 23:25:49 字數 1945 閱讀 9646

shell中正規表示式和萬用字元【linux上實際操作是什麼情況,就是什麼情況,理論只是猜測,試驗結果大於一切】

萬用字元一般是用於匹配符合條件的檔名(例如:ls fei*hai),而正規表示式則一般是用於在檔案中匹配符合條件的字串。

萬用字元是完全匹配,而正規表示式則是包含匹配。例如命令find . -name "abc?"找到的檔案都是以abc開頭的4字母長度的檔案,而命令grep "size" canvas.conf找到的則是所有含有size的字串。包含匹配:只要行內存在匹配成功的,該行整個就會被選中。

正規表示式又分基礎正規表示式和擴充套件正規表示式

基礎正規表示式:元字元 *  .   ^  $    [^]  \  \  \  \

命令grep "aa*" test.txt是匹配包含乙個a,且其後跟0個或任意多個a的字串。星號前面的a是用於指明可能出現重複的字元。

元字元只能匹配乙個字元,命令grep ".*" test.txt是匹配所有字元。"a\":轉義字元(\)使大括號()僅僅代表大括號,n為數字,例如:"a\"表示的意義是匹配a字母連續出現8次的字串;"[0-9]\"表示匹配包含5個連續數字的字串;"a\"表示的意義是匹配a字母連續出現8次以上的字串;"a\"表示的意義是匹配a字母連續出現8到10次的字串。

擴充套件正則:元字元 ? ()

cut擷取:

使用cut命令時預設使用的切割符是製表符;如果人為指定空格為切割符且在空格分布不均勻的情況下,可能會切割不準確。cut -d  -f

awk擷取:

該命令甚至支援在其中進行邏輯處理(if,while判斷,函式呼叫...),實現流程控制。支援print和printf. 

命令格式:awk '條件1條件2...';

其中條件一般使用關係表示式作為條件(x>10,x>=10,x<=10);

動作可以是格式化輸出(print,printf),流程控制語句(if, while,函式呼叫...);例如:awk '' test.txt;

命令詳解:讀取test.txt檔案中的一行,判斷條件執行動作,處理完所有的行後才進行下一步動作,檔案無論是在處理前還是在處理後,始終都是作為乙個整體而存在,在awk外無法獲取檔案的某一行,在awk命令的內部才能獲取檔案的某一行。條件可以是:begin(這個條件比較重要在進行資料處理之前就執行begin後的動作,例如命令:cat /etc/passwd | grep /bin/bash | awk '' 輸出的第一行就不是按照格式化的要求輸出,因為awk的原理是先讀入資料在執行指明的動作,此時將分割符指定為冒號為時以晚,如果改用awk 'bigin則在讀入之前就現執行動作fs=":",此時第一行就不會存在格式錯誤了。

awk預設的資料輸入**是標準輸出,除非用管道重定義輸入

printf格式化輸出,無論輸出啥都要事前規定輸出格式。不支援資料流格式,即命令cat test.txt | printf會報錯。 

命令格式:printf '輸出格式'  輸出內容;如果輸出內容中存在\t,\n等等字元,需要用單引號將這些字元括起來,當在awk中由於最外面有單引號,所以這個時候這些字元就必須用雙引號括起來。

sed擷取(嚴格上講sed屬於字元替換[一般意義上的替換,刪除,修改,增加]命令)。

命令格式:sed  選項  '動作'  檔名;選項有-n -i -e;動作有:a,c,i,p,s。在動作前面可以加指定的行號,例如命令sed -n '2,4d' test.txt表示刪除test.txt檔案中第2到第4行的內容。【sed命令和vi有很多相似之處,vi是用於人機互動,而sed是用於指令碼shell】

----------------字元處理命令:sort命令,wc命令

排序命令sort:命令格式:sort 選項  檔名;選項有-f,-n,-r,-t,-k n[,m]。預設的分割符是製表符。

統計命令wc:命令格式:wc  選項   檔名;選項有-i,-w,-m。

萬用字元 正規表示式

萬用字元 萬用字元是系統級別的 而正規表示式需要相關 工具和語 言的 支援 egrep,awk,vi,perl。當您鍵入 ls txt 命令並按 enter 後,尋找哪些檔案同 txt 模式相匹配的任務不是由 ls 命令,而是由 shell 自己完成。這需要對命令列是如何被 shell 解析的作進一...

萬用字元 正規表示式

萬用字元 萬用字元是系統級別的 而正規表示式需要相關 工具和語 言的 支援 egrep,awk,vi,perl.當您鍵入ls.txt命令並按enter後,尋找哪些檔案同.txt模式相匹配的任務不是由ls命令,而是由shell自己完成.這需要對命令列是如何被shell解析的作進一步解釋.當您鍵入 ls...

Shell萬用字元 正則 正規表示式

shell萬用字元 正則 正規表示式 shell 中支援使用萬用字元,常用的萬用字元如下 表示任意單個字元 表示任意長度的任意字串 表示匹配放在中的字符集中的任意乙個字串 大括號中的字串中用英文逗號隔開。www.2cto.com 宣告 以下的顯示目錄下的所有檔案不包括遞迴。示例1 顯示當前目錄下ap...