shell 正規表示式

2021-07-31 14:48:54 字數 2844 閱讀 4652

正規表示式:(regular expression regex regexp)

find vim locate grep sed awk

第一類正則:

前導字元,(位於元字元前面的字元);元字元:在正則裡有特殊的專用的含義的符號

. :除了換行符以外的任意單個字元

* :bo* bo|boo

.* :

^:$:

^$::

[^]:

^:^[^]:

\<:

\>:

\<\>:

\ :

\ :\ :

\(\)

擴充套件正則:

grep -e|egrep

1111 grep 'root|sync' /etc/passwd

1112 grep -e 'root|sync' /etc/passwd

1113 egrep 'root|sync' /etc/passwd

+: bo+ bo boo 前導字元連續出現1次或者多次

?:前導字元連續出現0次或者1次

1117 grep -e 'g+' test1

1118 grep 'g+' test1

1119 egrep 'g+' test1

1120 grep -e 'g+o?' test1

1121 grep -e 'go?' test1

\d [0-9]

\w 匹配數字字母和下劃線

\s 匹配空格、製表符、換頁符、換行符(\t\r\n)

1129 grep -p '\d' test

1130 grep -p '\w' test

1131 vim test

1132 grep -p '\s' test

第二類正則:

# grep '[[:alnum:]]' test

[[:alnum:]]

all letters and digits

[[:alpha:]]

all letters

[[:blank:]]

all horizontal whitespace

[[:cntrl:]]

all control characters

[[:digit:]]

all digits

[[:graph:]]

all printable characters, not including space

[[:lower:]]

all lower case letters

[[:print:]]

all printable characters, including space

[[:punct:]]

all punctuation characters

[[:space:]]

all horizontal or vertical whitespace

[[:upper:]]

all upper case letters

課堂練習:

1、查詢不以大寫字母開頭的行(3種寫法)

^[^a-z]

[[:upper:]]

-v '^[a-z]'

2、查詢有數字的行(2種)

3、查詢乙個數字和乙個字母連起來的行

[0-9][a-z]|[a-z][0-9]

# grep -e '[0-9][a-z]|[a-z][0-9]' test

4、查詢不以r開頭的行

5、查詢以數字開頭的行

6、查詢以大寫字母開頭的

7、查詢以小寫字母開頭的

8、查詢以點.結尾的

9、去掉空行

10、完全匹配hello的行

11、查詢a後有三個數字的行

# grep 'a[0-9]\' test

# grep -e 'a[0-9]' test

12、統計root在/etc/passwd裡出現的次數

# grep -o root /etc/passwd|wc -l

13、用正規表示式找出自己的ip位址、廣播位址、子網掩碼(一條命令搞定)

[root@node1 shell03]# ifconfig eth0|grep bcast|grep -o '[0-9]\\.[0-9]\\.[0-9]\\.[0-9]\'

10.1

.1.1

10.1

.1.255

255.255

.255

.0[root@node1 shell03]# ifconfig eth0|grep bcast

inet addr:10.1

.1.1 bcast:10.1

.1.255 mask:255.255

.255

.0[root@node1 shell03]# ifconfig eth0|grep bcast|grep -o -p '\d+\.\d+\.\d+\.\d+'

10.1

.1.1

10.1

.1.255

255.255

.255

.014、找出檔案中的ip位址並列印替換成172.16

.2.254

sed -n 's/***/***/p' filename

# sed -n 's/\([0-9]\\.[0-9]\\.[0-9]\\.\)110/\1254/p' test

# sed -n 's/\(172\.16\.2\.\)110/\1254/p' test

15、找出檔案中的ip位址

# grep -o -p '\d+\.\d+\.\d+\.\d+' test

shell正規表示式

句點 匹配單字元 1 匹配任意單ascii 字元,可以為字母,或為數字。2 舉例 xc.匹配dexc1t 23xcdf 等,w.w.w.匹配rwxrw rw 行首以 匹配字串或字串行 1 允許在一行的開始匹配字元或單詞。2 舉例 01 匹配0011cx4 c01sdf 等,d 匹配drwxr xr ...

shell正規表示式

句點 匹配單字元 1 匹配任意單ascii 字元,可以為字母,或為數字。2 舉例 xc.匹配dexc1t 23xcdf 等,w.w.w.匹配rwxrw rw 行首以 匹配字串或字串行 1 允許在一行的開始匹配字元或單詞。2 舉例 01 匹配0011cx4 c01sdf 等,d 匹配drwxr xr ...

shell 正規表示式

一 從頭開始 echo the book sed n the p 二 結尾 三 聯合定位 this is a test 四 點字元 用於匹配除換行符之外的任何乙個單一字元 五 字元類 定義一類字元,用於匹配文字模式中的某一位置 例如 echo n ch at p data the cat is sl...