正規表示式

2021-06-27 05:06:19 字數 4040 閱讀 2459

字元

代表意義

[: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:]

標點符號,即」 「 ? ! ; : # $

[upper:]                 

大寫字元,即a-z

[:space:]

任何會產生空白的字元,包括空格鍵[tab] cr等

[:xdigit:]

十六進製制的數字型別,因此包括0-9,a-f,a-f的數字與字元

^word

意義:待查詢的字串(word)在行首。

例子:查詢行首為#開始的那一行,並列出行號:grep –n 『^#』 file.txt

word$

意義:待查詢的字串(word)在行尾。

例子:將行尾為!的那一行列印出來,並列出行號:grep –n 『!$』 file.txt .

意義:代表一定有乙個任意字元的字元。

例子:查詢的字串可以是(eve) (eae) (eee) (ee),但不能僅有(ee),即e與e中間一定僅有乙個字元,而空格符也是字元:grep –n 『e.e』 file.txt \

意義:轉義字元,將特殊符號的特殊意義去除。

例子:查詢含有單引號』的那一行:grep –n \』 file.txt *

意義:重複零個到無窮多個的前乙個字元。

例子:找出(es) (ess) (esss)等的字串,注意,因為*可以是0個,所以es也是符合待查詢字串。另外,因為*為重複「前乙個字元re」的符號,因此,在*之前必須要緊接著乙個re字元:grep –n 『ess*』 file.txt

[list]

意義:從字元集合的re字元裡面找出想要選取的字元。

例子:查詢含有(gl)或(gd)的那一行需要特別留意的是,在當中代表乙個待查詢的字元,a[afl]y代表查詢的字串可以是aay,afy,aly即[afl]代表a或f或l的意思:

grep –n 『g[ld]』 file.txt

[n1-n2]

意義:從字元集合的re字元裡面查詢出想要選取的字元範圍。

例子:查詢含有任意數字的那一行,grep –n 『[0-9]』 file.txt

[^list]

意義:從字元集合的re字元裡面找出不要的字串或範圍。

例子:查詢的字串可以是(oog) (ood)但不能使(oot),grep –n 『oo[^t] file.txt \

意義:連續n到m個的前乙個re字元,若為\則是連續n個的前乙個re字元,若為\則表示連續n個以上的前乙個re字元。

例子:在g與g之間有2個到3個的o存在的字串grep –n 『go\g』 file.txt

擴充套件正規表示式,使用grep –e 或 egrep+

意義:重複乙個或乙個以上的前乙個re字元

例子:查詢(god) (good) (goood)等的字串。那麼o+代表乙個以上的o

egrep –n 『go+d』 file.txt ?

意義:零個或乙個的前乙個re字元

例子:查詢(gd) (god)這兩個字串。那個o?代表空的或1個o,

egrep –n 『go?d』 file.txt |

意義:用或(or)的方式找出多個字串

例子:查詢gd或good這兩個字串

egrep –n 『gd|good』 file.txt

( )意義:找出「組」字串

例子:查詢(glad)或(good)這兩個字串,以為g與d是重複的,所以可以將la與oo列於( )當中,並以|分隔開

egrep –n 『g(la|oo)d』 file.txt

( )+

意義:多個組重複組的判別

例子:查詢axyzxyzxyzxyzc

egrep 『a(xyz)+c』 file.txt

二、cut、grep、sort、wc、uniq

1. cut

cut-d 『分割字元' -f fields

cut -c 字元範圍(n),從第n個字元開始

引數:-d:後面接分割符,與-f一起使用;

-f:依據-d的分割符將一段資訊切割成為資料段,用-f取出第幾段的意思;

-c:以字元的單位取出固定字元區間。

例子:echo $path|cut -d 』:' -f 3,5。以:進行分割,然後取出第三和第五段

2. grep

grep[-acinv] [-a] [-b] [--color=auto] '查詢字串' filename

引數:-a:將binary檔案以text檔案的方式查詢資料;

-c:計算找到』查詢字串『的次數;

-i:忽略大小寫的不同

-n:順便輸出行號

-v:反向選擇,即顯示出沒有』查詢字串『內容的那一行

-a:後面可加數字,為after的意思,除了列出該行外,後續的n行也列出來

-b:後面可加數字,為befor的意思,除了列出該行外,前面的n行也列出來

--color=auto:找到的關鍵字部分會用特殊顏色顯示

grep --color=auto wang files,在files檔案中查詢字元wang

3. sort

sort [-fbmnrtuk] [file  or stdin]

引數:-f:忽略大小寫的差異

-b:忽略最前面的空格符部分

-m:以月份的名字來排序

-n:使用『純數字』進行排序(預設是以文字型別來排序的)

-r:反向排序

-u:就是uniq,相同的資料中,僅出現一行代表

-t:分割符,預設是用tab鍵來分隔

-k:以那個區間來進行排序的意思

例子:files檔案中內容

adm:x:3:4:adm:/var/adm

bin:x:1:1:bin

apache:x:48:48

daemon:x:2:2

cat files | sort 預設以文字型別排序

adm:x:3:4:adm:/var/adm

apache:x:48:48

bin:x:1:1:bin

daemon:x:2:2

cat files | sort -t ':' -k 3 以『:』來分隔,以第三個排序

bin:x:1:1:bin

daemon:x:2:2

adm:x:3:4:adm:/var/adm

apache:x:48:48

4. uniq 去重

uniq [-ic]

引數:-i:忽略大小寫字元

-c:進行計數

例子:last | cut -d ' ' -f 1 | sort |uniq (其中last檢視登入資訊)

reboot

wtmp

wyllast | cut -d ' ' -f 1 | sort |uniq -c

7 reboot

1 wtmp

14 wyl

5. wc計算輸出資訊的整體資料,行數、字數、字元數

wc [-lwm]

引數:-l:僅列出行

-w:僅列出多少單詞

-m:多少字元數

正規表示式 正規表示式 總結

非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...

正規表示式 表示式

網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...

Linux正規表示式 編寫正規表示式

為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...