日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

通配符&正则表达式&特殊符号总结

發布時間:2023/12/13 综合教程 28 生活家
生活随笔 收集整理的這篇文章主要介紹了 通配符&正则表达式&特殊符号总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

通配符

概念

bash操作環境下的功能。

*  代表0個到任意多個字符

?  代表一定有一個任意字符

[]  代表一定有[]中的一個字符。如g[a,b,c]d表示gad、gbd、gcd

[-]  代表一定有編碼順序內的所有字符。如g[0-9]d表示g0d、g1d、g2d...、g9d

[^]  代表反向選擇。如g[^abc]d表示gdd、ged、gfd...、gzd、g0d、g1d...

特殊字符

# 注釋

轉義符號

| 管道符

; 命令分隔符,多條命令使用

~ 用戶主文件夾

$ 變量前導符

& 作業控制,將作業變為后臺

! 邏輯符--非

/ 目錄符號

>,>>  數據流重定向,輸出導向

<,<<  數據流重定向,輸入導向

''  單引號,不具備變量置換的功能

""  雙引號,具備變量置換的功能

`` 里面為先執行的命令,等效于$()

()  中間為子shell的起始與結束

{}   中間為命令塊的組合

   重要:

   ?、?!在[]中不是特殊字符。

      表示反向選擇:

        [!a-z] 錯誤

        [^a-z] 正確

  ② $()與``的區別

      命令 結果

      echo $$ $$

      echo `echo \$\$` $$ ``中兩個表轉義

      echo $(echo $$) $$ $()中一個表轉義

正則表達式

概念

  正則表達式是通過一些特殊字符的排列,用以查找、替換、刪除一行或多行文字字符串。簡單地說,就是用在字符串的處理上面的一項“表達式”

語系對正則表達式的影響

  不同語系下,可能會得到不同的結果。

  如[a-z]在gb2312下得到aAbB...z,C語系下得到abc...z

  一般使用LANG=C語系

  以下符號可以避免編碼問題

    特殊符號 代表意義

    [:alnum:] 代表英文大小寫字符及數字,即 0-9, A-Z, a-z

    [:alpha:] 代表任何英文大小寫字符,即 A-Z, a-z

    [:digit:] 代表數字而已,即 0-9

    [:lower:] 代表小寫字符,即 a-z

    [:upper:] 代表大寫字符,即 A-Z

    [:blank:] 代表空格鍵與 [Tab] 按鍵兩者

    [:cntrl:] 代表鍵盤上面的控制按鍵,即包括 CR, LF, Tab, Del.. 等等

    [:graph:] 除了空格符 (空格鍵與 [Tab] 按鍵) 外的其他所有按鍵

    [:print:] 代表任何可以被打印出來的字符

    [:punct:] 代表標點符號 (punctuation symbol),即:" ' ? ! ; : # $

    [:space:] 任何會產生空白的字符,包括空格鍵, [Tab], CR 等等

    [:xdigit:] 代表 16 迚位的數字類型,因此包括: 0-9, A-F, a-f 的數字與字符

分類

依據不同的嚴謹程度分為基礎正則表達式與擴展正則表達式

基礎正則表達式的特殊字符

^word word$ . *

[n1-n2] [^list] [^n1-n2] {n} {n,m} {n,}

^word 待查找的字符串word在行首

找出所有注釋行

grep –n ‘^#’ regular_express.txt

找出開頭不是英文字母的行

grep –n ‘^[^[:alpha:]]’ regular_express.txt

word$ 帶查找的字符串word在行尾

找出!結尾的行

grep –n ‘!$’ regular_express.txt

找出空白行

grep –n ‘^$’ regular_express.txt

. 代表一定有任意一個字符

找出包括g??d的字符串

grep –n ‘g..d’ regular_express.txt

轉義字符,轉義特殊字符

找出小數點.結尾的行

grep –n ‘.$’ regular_express.txt

* 重復0個到無窮多個的前一個字符

找出包含o、oo、ooo、oooo...的行

grep –n ‘oo*’ regular_express.txt

找出g開頭和g結尾的所有行,當中任意字符

grep –n ‘g*g’ regular_express.txt  錯誤

grep –n ‘g.*g’ regular_express.txt  正確

找出包含任意數字的行

grep –n ‘[:digit:][:digit:]*’ regular_express.txt

RE字符集合里面的任意一個字符

找到a或d開頭的任意行

grep –n ‘^[ad]’ regular_express.txt

[n1-n2] 當前語系下RE字符集合的字符范圍里面的任意一個字符

找到a或b或c或d開頭的任意行

grep –n ‘^[a-d]’ regular_express.txt

[^list] 非RE字符集合

找到不是a或d開頭的任意行

grep –n ‘^[^ad]’ regular_express.txt

注:b、c開頭的會被列出

[^n1-n2] 非當前語系下RE字符集合的字符范圍里面的任意一個字符

找到不是a或b或c或d開頭的任意行

grep –n ‘^[^a-d]’ regular_express.txt

{n} 連續n個前一個RE字符

找到go...od(100個o)

grep –n ‘go{100}d’ regular_express.txt

{n,m} 連續n到m個前一個RE字符

找到go...od(2到5個o)

grep –n ‘go{2,5}d’ regular_express.txt

{n,} 連續n個以上前一個RE字符

找到go...od(5個o以上)

grep –n ‘go{5,}d’ regular_express.txt

擴展正則表達式的特殊字符

+ ? | () ()+

  注:grep只支持基礎正則表達式,grep –E(寫作egrep)支持擴展正則表達式

+ 重復一個或一個以上的前一個RE字符

找到god、good、goo...od

egrep ‘go+d’ regular_express.txt

? 0個或1個前一個RE字符

找到gd、god

egrep ‘go?d’ regular_express.txt

| 用或的方式找出多個字符串(無規律)

找到glad、black、cache

egrep ‘glad|black|cache’ regular_express.txt

() 用組字符串找出多個字符串(有特定規律)

找到glad、good、geed

egrep ‘g(la|oo|ee)d’ regular_express.txt

()+ 找到有1個或多個重復組字符串

找到AxyzxyzxyzC

egrep ‘A(xyz)+C’ regular_express.txt

通配符和正則表達式的區別

  通配符是系統命令使用,一般用來匹配文件名或者什么的用在系統命令中;

  正則表達式是操作字符串,以行為單位來匹配字符串使用的。

符號

通配符

正則表達式

*

0個到任意多個字符

0個到任意多個前一個字符

?

一定有一個任意字符

0個或1個前一個字符

總結

以上是生活随笔為你收集整理的通配符&amp;正则表达式&amp;特殊符号总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。