您好,登錄后才能下訂單哦!
Shell腳本擴(kuò)展
一 正確表達(dá)式
正則表達(dá)式作為一個(gè)模板,將某個(gè)字符模式與所搜索的字符串進(jìn)行匹配。
1. 支持的命令:
grep、vim、find、awk、sed等。
1、.代表任意單個(gè)字符, 如:/l..e/與包含一個(gè)l,后跟兩個(gè)字符,然后跟一個(gè)e的行相匹配
檢索wang.txt文件中匹配s字符的。
2、^代表行的開始。 ^love 如:與所有love開頭的行匹配
檢索wang.txt文件中以N開頭的。
3、$代表行的結(jié)束。love$ 如:與所有love結(jié)尾的行匹配
那么‘^$’ 就表示空行
通配符
檢索wang.txt文件中匹配小寫字母a到z之間的。
注意:
[abc]表示匹配單個(gè)字符a或b或c
[123]表示匹配單個(gè)字符1或2或3
[A-Z]表示匹配大寫字母A-Z之間一個(gè)
[^a]表示取反,匹配除去小寫字母a的。
5、* 用于修飾前導(dǎo)字符,表示前導(dǎo)字符出現(xiàn)0次或任意多次
檢索wang.txt文件中出現(xiàn)0次或多次T的
6、\? 用于修飾前導(dǎo)字符,表示前導(dǎo)字符出現(xiàn)0或1次
7、\+ 用于修飾前導(dǎo)字符,表示前導(dǎo)字符出現(xiàn)1或多次
8、\{n,m\} 用于修飾前導(dǎo)字符,表示前導(dǎo)字符出現(xiàn)n至m次 (n和m都是整數(shù),且n<m)
表示前導(dǎo)字符出現(xiàn)n至m次;
n/m為整數(shù),并且m>n;
其他形式:
\{n\}連續(xù)的n個(gè)前導(dǎo)字符;
\{n,\}連續(xù)的至少n個(gè)前導(dǎo)字符;
檢索wang.txt文件中出現(xiàn)2至4個(gè)n的
9、\ 用于轉(zhuǎn)義緊跟其后的單個(gè)特殊字符,使該特殊字符成為普通字符
檢索wang.txt文件中含有.的。
10、|表示或 如: a|b|c 匹配a或b或c。如:grep|sed匹配grep或sed
檢索wang.txt文件中含有a或b的。
11、(),將部分內(nèi)容合成一個(gè)單位組,比如 要搜索 glad 或 good 可以如下 'g(la|oo)d'
二、grep命令的用法
參數(shù):
1. -A NUM,--after-context=NUM 除了列出符合行之外,并且列出后NUM行。
列出chai.txt文件中Tom行與后倆行
2. -B NUM,--before-context=NUM 與 -A NUM 相對(duì),但這此參數(shù)是顯示除符合行之外并顯示在它之前的NUM行。
列出chai.txt文件中Tom行與前倆行。
3、 -C [NUM], -NUM, --context[=NUM] 列出符合行之外并列出上下各NUM行,默認(rèn)值是2。
列出chai.txt文件中Tom行與前后倆行。
4、 -c, --count 不顯示符合樣式行,只顯示符合的總行數(shù)。若再加上-v,--invert-match,參數(shù)顯示不符合的總行數(shù)
列出chai.txt文件中含有Tom的行數(shù);
列出chai.txt文件中不含有Tom的行數(shù)。
5、-i,--ignore-case 忽略大小寫差別
列出chai.txt文件中含有tom(大小寫)的行。
6、-n,--line-number 在匹配的行前面打印行號(hào)
列出chai.txt文件中含有tom(大小寫)的行,并且打印出行號(hào)。
7、-v,--revert-match 反檢索,只顯示不匹配的行
列出chai.txt文件中不含有tom的行。
8、精確匹配:
例如在抽取字符串“ 48”,返回結(jié)果包含諸如484和483等包含“48”的其他字符串,實(shí)際上應(yīng)精確抽取只包含48的各行。
精確列出chai.txt文件中含有30的行。
9、-s 不顯示不存在或無匹配文本的錯(cuò)誤信
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 基本用法
把chai.txt中The替換成chai,輸出到aaa.txt文件中。
sed 替換命令
/../../分隔符(可以用其他符合代替)
The 搜索的字符串
chai 替換的字符串
<chai.txt> 搜索的文件
aaa.txt 輸出到的文件
1.2 用 & 表示匹配的字符串
有時(shí)可能會(huì)想在匹配到的字符串周圍或附近加上一些字符 .
如: sed 's/abc/(abc)/' <old >new
sed 默認(rèn)只替換搜索字符串的第一次出現(xiàn) , 利用 /g 可以替換搜索字符串所有
如果需要對(duì)同一文件或行作多次修改,可以使用 "-e" 選項(xiàng)
3.刪除行:d命令
從某文件中刪除包含 "how" 的所有行
將passwd內(nèi)容顯示并打印行號(hào),同時(shí)刪除2到5行。
nl命令在linux系統(tǒng)中用來計(jì)算文件中行號(hào)。nl 可以將輸出的文件內(nèi)容自動(dòng)的加上行號(hào)。
4.增加行:a命令(在指定的行后新增)或i命令(在指定的行前新增)
a的后面可以接字符串,而這些字符串會(huì)在新的一行出現(xiàn)
在/etc/passwd的第二行后增加“XXXXX”字樣的新行
將passwd內(nèi)容顯示并打印行號(hào),同時(shí)在第二行后新增hello。
將passwd內(nèi)容顯示并打印行號(hào),同時(shí)在第二行前新增hello。
如果要同時(shí)新增多行,則每行之間要用反斜杠\來進(jìn)行新行的添加
5、取代行:c命令
c的后面可以接字符串,這些字符串可以取代n1,n2之間的行
取代行
將passwd內(nèi)容顯示并打印行號(hào),同時(shí)取代2到5行間內(nèi)容。
6、打印:p命令
sed '/north/p' datafile 默認(rèn)輸出所有行,找到north的行重復(fù)打印
僅列出passwd文件中的第5到7行內(nèi)容。
sed 的-i選項(xiàng)可以直接修改文件中的內(nèi)容
6.?dāng)U展:
調(diào)用sed有三種方式:
l 在命令行鍵入命令
l 將sed命令插入腳本文件,然后調(diào)用sed
l 將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)] 輸入文件
第一行是sed命令解釋行。腳本在這一行查找sed以運(yùn)行命令,這里定位在/bin。
第二行以/company/開始,這是附加操作起始位置。a\通知sed
是一個(gè)附加操作,首先應(yīng)插入二個(gè)新行。
第三、四行是附加操作要加入到拷貝的實(shí)際文本。
免責(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)容。