91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

shell腳本編程之正則表達式(一)(基礎正則表達式、grep)

發布時間:2020-07-13 20:45:18 來源:網絡 閱讀:271 作者:wx5d8a17c45cb5b 欄目:系統運維

shell腳本編程之正則表達式(一)

一、前言

? 本文主要講述shell正則表達式的主要概念和常用“三劍客”之一的grep命令

二、正則表達式的定義

? 正則表達式:或稱正規表達式、常規表達式。是使用單個字符串來描述、匹配一系列符合某個句法規則的字符串,即通過一些特殊符號實現快速查找、刪除、替換某個特定字符串。由普通字符和元字符組成的文字模式。

? 普通字符:如大小寫字母、數字、標點符號以及一些其他符號

? 元字符:具有特殊意義的專用字符,可以用來規定其前導字符(即位于元字符前面的字符)在目標對象中的出現模式。

? 當然這些概念未免太過抽象而且枯燥,下面的實例或許可以有助于您理解這些抽象的概念。

正則表達式包括:

  • 基礎正則表達式——grep與sed支持
  • 擴展正則表達式——egrep與awk支持

三、正則表達式的作用

系統管理員常用,且是必備技能之一。有助于快速定位重要信息,解決相關問題。

四、正則表達式示例

下面結合實例細講grep命令在正則表達式的作用與使用格式方法,從而引出基本正則表達式所包含的元字符的含義。

grep命令

  1. -n——顯示行號
  2. -i——忽略大小寫
  3. -v——反向查找
[root@lokott opt]# cat test.txt              //測試文本內容
he was short and fat.
He was wearing a blue polo shirt with black pants. 
The home of Football on BBC Sport online.
the tongue is boneless but it breaks bones.12!
 google is the best tools for search keyword.
The year ahead will test our political establishment to the limit.
PI=3.141592653589793238462643383249901429
a wood cross!
Actions speak louder than words

#woood #
#woooooood # 
AxyzxyzxyzxyzC
I bet this place is really spooky late at night! 
Misfortunes never come alone/single.
I shouldn't have lett so tast.

1)查找特定字符

[root@lokott opt]# grep -n 'the' test.txt      //顯示行號檢索含有the的行
4:the tongue is boneless but it breaks bones.12!
5: google is the best tools for search keyword.
6:The year ahead will test our political establishment to the limit.

[root@lokott opt]# grep -ni 'the' test.txt              //顯示行號,不區分大小寫檢索含有the的行
3:The home of Football on BBC Sport online.
4:the tongue is boneless but it breaks bones.12!
5: google is the best tools for search keyword.
6:The year ahead will test our political establishment to the limit.

[root@lokott opt]# grep -nv 'the' test.txt     //顯示行號,檢索不帶the的行
1:he was short and fat.
2:He was wearing a blue polo shirt with black pants. 
3:The home of Football on BBC Sport online.
7:PI=3.141592653589793238462643383249901429
8:a wood cross!
9:Actions speak louder than words
10:
11:
12:#woood #
13:#woooooood # 
14:AxyzxyzxyzxyzC
15:I bet this place is really spooky late at night! 
16:Misfortunes never come alone/single.
17:I shouldn't have lett so tast.

2)下面利用中括號[ ]來查找集合字符

[root@lokott opt]# grep -n 'sh[io]rt' test.txt       //檢索包含shirt或者short的行
1:he was short and fat.
2:He was wearing a blue polo shirt with black pants. 
[root@lokott opt]# grep -n 'oo' test.txt              //重復字符檢索
3:The home of Football on BBC Sport online.
5: google is the best tools for search keyword.
8:a wood cross!
12:#woood #
13:#woooooood # 
15:I bet this place is really spooky late at night! 

[root@lokott opt]# grep -n '[^w]oo' test.txt             //檢索oo字符的前導字符為非w的行
3:The home of Football on BBC Sport online.
5: google is the best tools for search keyword.
12:#woood #            //這里匹配的是后面的兩個o,其前導字符為第一個o,所以顯示的時候這三個o為紅色
13:#woooooood #         //這里匹配的是第一個到第6個o
15:I bet this place is really spooky late at night! 
[root@lokott opt]# grep -n '[^a-z]oo' test.txt   //匹配字符串oo前面為非小寫字母的行,匹配的是Foo
3:The home of Football on BBC Sport online. 
[root@lokott opt]# grep -n '[0-9]' test.txt       //匹配數字字符
4:the tongue is boneless but it breaks bones.12!
7:PI=3.141592653589793238462643383249901429

3)查找行首^與行尾字符$

行首檢索實例:

[root@lokott opt]# grep -n '^the' test.txt                   //檢索以the開頭的行
4:the tongue is boneless but it breaks bones.12!
[root@lokott opt]# grep -n '^[a-z]' test.txt                //檢索以小寫字母開頭的行 
1:he was short and fat.
4:the tongue is boneless but it breaks bones.12!
8:a wood cross!
[root@lokott opt]# grep -n '^[a-zA-Z]' test.txt               //檢索以字母開頭的行
1:he was short and fat.
2:He was wearing a blue polo shirt with black pants. 
3:The home of Football on BBC Sport online.
4:the tongue is boneless but it breaks bones.12!
6:The year ahead will test our political establishment to the limit.
7:PI=3.141592653589793238462643383249901429
8:a wood cross!
9:Actions speak louder than words
14:AxyzxyzxyzxyzC
15:I bet this place is really spooky late at night! 
16:Misfortunes never come alone/single.
17:I shouldn't have lett so tast.

[root@lokott opt]# grep -n '^[^a-zA-Z]' test.txt      //檢索不是以字母開頭的行
5: google is the best tools for search keyword.
12:#woood #
13:#woooooood # 

注意:!這里的^所處的位置所代表的含義是不一樣的,在中括號外面的表示取以括號內的內容開頭,反之表示以內容取反。

簡單來說,16字概括:中括號外,以內開頭,中括號內,以內取反。

行尾$檢索實例:

[root@lokott opt]# grep -n '\.$' test.txt           //檢索以點“.”結尾的行
1:he was short and fat. 
3:The home of Football on BBC Sport online.
5: google is the best tools for search keyword.
6:The year ahead will test our political establishment to the limit.
16:Misfortunes never come alone/single.
17:I shouldn't have lett so tast.
[root@lokott opt]# grep -n '^$' test.txt             //檢索出空行 
10:
11:

注意:!!"."代表點的意思的時候,進行查找需要使用" \ " 轉義,因為點號“.”也是元字符

4)查找任意一個字符“.”與重復字符“*”

[root@lokott opt]# grep -n 'w..d' test.txt                //檢索w和d之間可以是任意兩個字符的行
5: google is the best tools for search keyword.
8:a wood cross!
9:Actions speak louder than words
[root@lokott opt]# grep -n 'wo*d' test.txt                 //檢索w和d之間o出現0次或者多次的行
8:a wood cross!
12:#woood #
13:#woooooood # 
[root@lokott opt]# grep -n 'ooo*d' test.txt             //檢索第三個o出現0次或者多次的行
8:a wood cross!
12:#woood #
13:#woooooood #
[root@lokott opt]# grep -n 'w.*d' test.txt               //檢索w與d之間可有可無的字符的行
1:he was short and fat.
5: google is the best tools for search keyword.
8:a wood cross!
9:Actions speak louder than words
12:#woood #
13:#woooooood # 
[root@lokott opt]# grep -n '[0-9][0-9]*' test.txt      //檢索任意數字所在的行
4:the tongue is boneless but it breaks bones.12!
7:PI=3.141592653589793238462643383249901429

5)查找連續字符范圍"{}"

? {}主要作用是為了限制一個范圍內重復的字符串,例如查找3-5個o的連續字符即可需要使用{},但是由于在shell中其有特定意義,所以需要利用轉義字符“\”,將“{}”字符轉換成普通字符。

[root@lokott opt]# grep -n 'o\{2\}' test.txt     //檢索連續兩個字符“o”的行
3:The home of Football on BBC Sport online.
5: google is the best tools for search keyword.
8:a wood cross!
12:#woood #
13:#woooooood # 
15:I bet this place is really spooky late at night! 
[root@lokott opt]# grep -n 'wo\{2,5\}d' test.txt //檢索以w開頭d結尾o出現2-5次的行
8:a wood cross!
12:#woood #
[root@lokott opt]# grep -n 'wo\{2,\}d' test.txt   //檢索w開頭d結尾o出現2次以上的行
8:a wood cross!
12:#woood #
13:#woooooood # 

五、元字符總結

基礎正則表達式常見元字符總結

^——上述16字口訣

$——匹配輸入字符串結尾位置

.——匹配除了“\r\n”的任何單個字符

\——將下一個字符標記為特殊字符,原意字符、向后引用、八進制轉義符。

*——匹配前面的前導字符出現0次或者多次

[]——字符集合。匹配所包含的任意一個字符。

[^]——賦值字符集合。匹配未包含的一個任意字符。

[n1-n2]——字符范圍。匹配指定范圍內的任意一個字符。

{n}——n為非負整數,匹配確定的n次。

{n,}——n為非負整數,至少匹配n次

{n1,n2}——n1和n2都是非負整數,n1<n2,匹配此時介于n1-n2之間。

六、小結

? 本文主要是借grep命令引出基礎正則表達式的基本概念與用法,介紹了如何使用基礎正則表達式以及對元字符進行解釋與常用元字符的總結。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

霍城县| 奉新县| 蒲城县| 望江县| 息烽县| 子洲县| 兴安县| 都江堰市| 宣威市| 钦州市| 兴隆县| 恩平市| 磐安县| 罗平县| 普兰店市| 萨迦县| 蒙阴县| 乌恰县| 沙河市| 江口县| 湄潭县| 石河子市| 牙克石市| 勐海县| 五指山市| 庆元县| 莱芜市| 弋阳县| 常宁市| 北宁市| 乾安县| 古交市| 漾濞| 略阳县| 大竹县| 璧山县| 金坛市| 五原县| 江源县| 内江市| 新安县|