溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

shell正則表達(dá)式

發(fā)布時(shí)間:2020-10-07 02:12:52 來源:網(wǎng)絡(luò) 閱讀:587 作者:柴鑫旺 欄目:MySQL數(shù)據(jù)庫

     Shell腳本擴(kuò)展

正確表達(dá)式

正則表達(dá)式作為一個(gè)模板,將某個(gè)字符模式與所搜索的字符串進(jìn)行匹配。

1. 支持的命令:

grep、vim、find、awk、sed等。

1.代表任意單個(gè)字符, 如:/l..e/與包含一個(gè)l,后跟兩個(gè)字符,然后跟一個(gè)e的行相匹配 

shell正則表達(dá)式

檢索wang.txt文件中匹配s字符的。

2、^代表行的開始。 ^love 如:與所有love開頭的行匹配 

shell正則表達(dá)式

檢索wang.txt文件中以N開頭的。

3$代表行的結(jié)束。love$ 如:與所有love結(jié)尾的行匹配 

那么^$就表示空行

shell正則表達(dá)式

通配符

shell正則表達(dá)式

檢索wang.txt文件中匹配小寫字母az之間的。

注意:

[abc]表示匹配單個(gè)字符abc

[123]表示匹配單個(gè)字符123

[A-Z]表示匹配大寫字母A-Z之間一個(gè)

[^a]表示取反,匹配除去小寫字母a的。

5、* 用于修飾前導(dǎo)字符,表示前導(dǎo)字符出現(xiàn)0或任意多

shell正則表達(dá)式

檢索wang.txt文件中出現(xiàn)0次或多次T

6、\? 用于修飾前導(dǎo)字符,表示前導(dǎo)字符出現(xiàn)01


shell正則表達(dá)式

7、\+ 用于修飾前導(dǎo)字符,表示前導(dǎo)字符出現(xiàn)1或多

shell正則表達(dá)式

8、\{n,m\}  用于修飾前導(dǎo)字符,表示前導(dǎo)字符出現(xiàn)n至m次 n和m都是整數(shù),且n<m)

 表示前導(dǎo)字符出現(xiàn)nm次;

 n/m為整數(shù),并且m>n

 其他形式:

\{n\}連續(xù)的n個(gè)前導(dǎo)字符;

\{n,\}連續(xù)的至少n個(gè)前導(dǎo)字符;


shell正則表達(dá)式

檢索wang.txt文件中出現(xiàn)24個(gè)n

9、\  用于轉(zhuǎn)義緊跟其后的單個(gè)特殊字符,使該特殊字符成為普通字符

shell正則表達(dá)式

檢索wang.txt文件中含有.的。

10、|表示  如: a|b|c 匹配abc。如:grep|sed匹配grepsed

shell正則表達(dá)式

檢索wang.txt文件中含有ab的。

11、(),將部分內(nèi)容合成一個(gè)單位組,比如 要搜索 glad  good 可以如下 'g(la|oo)d'

shell正則表達(dá)式

二、grep命令的用法

參數(shù):

1. -A NUM,--after-context=NUM   除了列出符合行之外,并且列出后NUM行。

shell正則表達(dá)式

列出chai.txt文件中Tom行與后倆行

2. -B NUM,--before-context=NUM   -A NUM 相對(duì),但這此參數(shù)是顯示除符合行之外并顯示在它之前的NUM行。

shell正則表達(dá)式

列出chai.txt文件中Tom行與前倆行。

3、 -C [NUM], -NUM, --context[=NUM]  列出符合行之外并列出上下各NUM行,默認(rèn)值是2。

shell正則表達(dá)式

列出chai.txt文件中Tom行與前后倆行。

4、 -c, --count  不顯示符合樣式行,只顯示符合的總行數(shù)。若再加上-v,--invert-match,參數(shù)顯示不符合的總行數(shù)

shell正則表達(dá)式

列出chai.txt文件中含有Tom的行數(shù);

列出chai.txt文件中不含有Tom的行數(shù)。

5、-i--ignore-case 忽略大小寫差別

shell正則表達(dá)式

列出chai.txt文件中含有tom(大小寫)的行。

6、-n--line-number 在匹配的行前面打印行號(hào)

shell正則表達(dá)式

列出chai.txt文件中含有tom(大小寫)的行,并且打印出行號(hào)。

7、-v--revert-match  反檢索,只顯示不匹配的行

shell正則表達(dá)式

列出chai.txt文件中不含有tom的行。

8、精確匹配:

例如在抽取字符串“ 48”,返回結(jié)果包含諸如484和483等包含“48”的其他字符串,實(shí)際上應(yīng)精確抽取只包含48的各行。

shell正則表達(dá)式

精確列出chai.txt文件中含有30的行。

9、-s 不顯示不存在或無匹配文本的錯(cuò)誤信

shell正則表達(dá)式

xin.txt文件不存在,檢索時(shí)候提示搜索不到的錯(cuò)誤信息,

如果不要錯(cuò)誤信息提示,則加上-s。

三、sed命令的用法

1sed是一種在線編輯器,它一次處理一行內(nèi)容。處理時(shí),把當(dāng)前處理的行存儲(chǔ)在臨時(shí)緩沖區(qū)中,稱為模式空間pattern space),接著用sed命令處理緩沖區(qū)中的內(nèi)容,處理完成后,把緩沖區(qū)的內(nèi)容送往屏幕。

2把緩沖區(qū)的內(nèi)容送往屏幕。接著處理下一行,這樣不斷重復(fù),直到文件末尾。

3文件內(nèi)容并沒有改變,除非你使用重定向存儲(chǔ)輸出。

1替換: s命令
  1.1 基本用法 

shell正則表達(dá)式

chai.txtThe替換成chai,輸出到aaa.txt文件中。

sed 替換命令

/../../分隔符(可以用其他符合代替)

The 搜索的字符串

chai  替換的字符串

<chai.txt>  搜索的文件  

aaa.txt   輸出到的文件

1.2  & 表示匹配的字符串

有時(shí)可能會(huì)想在匹配到的字符串周圍或附近加上一些字符 .
 如: sed 's/abc/(abc)/' <old >new

shell正則表達(dá)式

sed 默認(rèn)只替換搜索字符串的第一次出現(xiàn) , 利用 /g 可以替換搜索字符串所有

如果需要對(duì)同一文件或行作多次修改,可以使用 "-e" 選項(xiàng)

3.刪除行:d命令

從某文件中刪除包含 "how" 的所有行

shell正則表達(dá)式

將passwd內(nèi)容顯示并打印行號(hào),同時(shí)刪除25行。

nl命令在linux系統(tǒng)中用來計(jì)算文件中行號(hào)。nl 可以將輸出的文件內(nèi)容自動(dòng)的加上行號(hào)。

4.增加行:a命令(在指定的行后新增)或i命令(在指定的行前新增)

a的后面可以接字符串,而這些字符串會(huì)在新的一行出現(xiàn)

/etc/passwd的第二行后增加XXXXX”字樣的新行

shell正則表達(dá)式

passwd內(nèi)容顯示并打印行號(hào),同時(shí)在第二行后新增hello

shell正則表達(dá)式

passwd內(nèi)容顯示并打印行號(hào),同時(shí)在第二行前新增hello。

如果要同時(shí)新增多行,則每行之間要用反斜杠\來進(jìn)行新行的添加

shell正則表達(dá)式

5、取代行:c命令

c的后面可以接字符串,這些字符串可以取代n1,n2之間的行

取代行

shell正則表達(dá)式

將passwd內(nèi)容顯示并打印行號(hào),同時(shí)取代25行間內(nèi)容。

6、打印:p命令 

sed '/north/p' datafile 默認(rèn)輸出所有行,找到north的行重復(fù)打印 

shell正則表達(dá)式

僅列出passwd文件中的第57行內(nèi)容。

sed -i選項(xiàng)可以直接修改文件中的內(nèi)容

shell正則表達(dá)式

6.?dāng)U展:

調(diào)用sed有三種方式:

在命令行鍵入命令

sed命令插入腳本文件,然后調(diào)用sed

sed命令插入腳本文件,并使sed腳本可執(zhí)行。

A、 使用sed命令行格式為:

sed [選項(xiàng)] sed命令 輸入文件。

記住在命令行使用sed命令時(shí),實(shí)際命令要加單引號(hào)。sed也允許加雙引號(hào)。

 

B、使用sed腳本文件,格式為:

sed [選項(xiàng)] -f sed腳本文件  輸入文件

 

C、要使用第一行具有sed命令解釋器的sed腳本文件,其格式為:

sed腳本文件 [選項(xiàng)]  輸入文件

shell正則表達(dá)式

第一行是sed命令解釋行。腳本在這一行查找sed以運(yùn)行命令,這里定位在/bin。

第二行以/company/開始,這是附加操作起始位置。a\通知sed

是一個(gè)附加操作,首先應(yīng)插入二個(gè)新行。

第三、四行是附加操作要加入到拷貝的實(shí)際文本。

shell正則表達(dá)式






向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI