正規表示式:(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...