linux之正規表示式

2021-08-07 15:10:33 字數 2693 閱讀 2002

正規表示式,又稱正規表示式、正規表示法、正規表示式、規則表示式、常規表示法(英語:regular expression,在**中常簡寫為 regex、regexp 或 re),電腦科學的乙個概念。正規表示式使用單個字串來描述、匹配一系列符合某個句法規則的字串。在很多文字編輯器裡,正規表示式通常被用來檢索、替換那些符合某個模式的文字

+表示前面的字元必須出現至少一次(1次或多次),例如,"goo+gle",可以匹配"gooogle","goooogle"等;

?表示前面的字元最多出現一次(0次或1次),例如,"colou?r",可以匹配"color"或者"colour";

*星號代表前面的字元可以不出現,也可以出現一次或者多次(0次、或1次、或多次),例如,「0*42」可以匹配42、042、0042、00042等。

\將下乙個字元標記為乙個特殊字元或乙個轉義字元

^匹配輸入字串的開始位置

$匹配輸入字串的結束位置

n是乙個非負整數,匹配卻的n次

至少匹配n次

n<=m最少匹配n次最多匹配m次

*匹配前面的子表示式零次或多次

+匹配前面的子表示式一次或多次

?匹配前面的子表示式零次或一次

.匹配出"\n"之外的任何單個字元,要匹配\n可以這樣寫".|\n"

(pattern)匹配pattern並獲取這一匹配的子字串

x|y匹配x或y

[xyz]匹配所包含的任意乙個字元

[^xyz]匹配未列出的任意字元

[a-z]匹配指定範圍內的任意字元

grep -e擴充套件正規表示式

grep -g基本正規表示式

grep -p正規表示式

grep -b將二進位制檔案作為文本來進行匹配

grep -c統計一模式匹配的數目

grep -i忽略大小寫

grep -n顯示匹配文字所在行的行號

grep -v反選輸出不匹配的行的內容

grep -r遞迴匹配查詢

grep -a n處理列出匹配行之外,還列出後面的n行

grep -b n還列出前面的n行

grep 'shiyanlou' /etc/group

echo 'zero\nzo\nzoo' |grep 'z..*o'將匹配z開頭o結尾的所有字串

echo 'zero\nzo\nzoo' |grep 'z.o'將匹配中間包含乙個任意字元的字串

[:alnum:] 代表英文大小寫位元組及數字,亦即 0-9, a-z, a-z

[:alpha:] 代表任何英文大小寫位元組,亦即 a-z, a-z

[:blank:] 代表空白鍵與 [tab] 按鍵兩者

[:cntrl:] 代表鍵盤上面的控制按鍵,亦即包括 cr, lf, tab, del.. 等等

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

[:graph:] 除了空白位元組 (空白鍵與 [tab] 按鍵) 外的其他所有按鍵

[:lower:] 代表小寫位元組,亦即 a-z

[:print:] 代表任何可以被列印出來的位元組

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

[:upper:] 代表大寫位元組,亦即 a-z

[:space:] 任何會產生空白的位元組,包括空白鍵, [tab], cr 等等

[:xdigit:] 代表 16 進製的數字型別,因此包括: 0-9, a-f, a-f 的數字與位元組

echo 'zero\nzo\nzoo' |grep -e 'zo'只匹配zo

echo 'zero\nzo\nzoo' |grep -e 'zo'匹配zo開頭的所有單詞

sed -n安靜模式,只列印受影響的行,預設列印輸入資料的全部內容

sed -e用於在指令碼中新增多個執行命令一次執行

sed -f filename指定執行filename檔案中的命令

sed -r使用擴充套件正規表示式

sed -i將直接修改輸入檔案內容

s行內替換c整行替換a插入到指定行的後面i插入到指定行的前面p列印制定行d刪除指定行

nl passwd |sed -n '2,5p'列印2到5行

awk是一種優良的文字處理工具,它允許您建立簡短的程式,這些程式讀取輸入檔案、為資料排序、處理資料、對輸入執行計算以及生成報表,還有無數其他的功能

用vim建立乙個檔案test然後輸入以下命令

awk '' test

需要注意nr ofs這兩個是awk內建的變數,nr表示當前讀入的記錄數,你可以簡單的理解為當前處理的行數,ofs表示輸出時的字段分隔符,預設為" "空格

filename當前輸入檔名,若有多個檔案,則只表示第乙個。如果輸入是來自標準輸入,則為空字串

$0當前記錄的內容

$nn表示欄位號,最大值為nf變數的值

fs欄位分隔符,由正規表示式表示,預設為" "空格

rs輸入記錄分隔符,預設為"\n",即一行為乙個記錄

nf當前記錄字段數

nr已經讀入的記錄數

fnr當前輸入檔案的記錄數,請注意它與nr的區別

ofs輸出字段分隔符,預設為" "空格

ors輸出記錄分隔符,預設為"\n"

Linux之正規表示式

正規表示式用來在檔案中匹配符合條件的字串,正則是包含匹配。grep awk,sed等命令可以運動正規表示式。正規表示式匹配得到的結果是行 萬用字元用來匹配符合條件的檔名,萬用字元是完全匹配。ls.find.cp這些命令不支援正規表示式,所以只能用shell自己的萬用字元來進行匹配了。例 grep a...

Linux之正規表示式

字元含義 字串開始 配字串結尾 匹配0個或多個的前乙個字元。注意shell中的 是萬用字元,可以匹配任意字元。與正規表示式中的有差異。匹配任意單字元 示例1 句點匹配 句點匹配單個字元 匹配許可權 x.x.x 前4個字元之後為xc xc.示例2 行首匹配 匹配目錄 d匹配行首為001的 001 每行...

linux之正規表示式

1 定義 正規表示式是使用一種模式去匹配一類字串的公式 2 元字元 rot 123 ratgood godgooood gdgood 1djsdh test1212 020 7266452 010 6765276 0987 8726531 13687652890 78731 dhsdsjhd hel...