您好,登錄后才能下訂單哦!
Shell腳本擴展
一 正確表達式
正則表達式作為一個模板,將某個字符模式與所搜索的字符串進行匹配。
1. 支持的命令:
grep、vim、find、awk、sed等。
1、.代表任意單個字符, 如:/l..e/與包含一個l,后跟兩個字符,然后跟一個e的行相匹配
檢索wang.txt文件中匹配s字符的。
2、^代表行的開始。 ^love 如:與所有love開頭的行匹配
檢索wang.txt文件中以N開頭的。
3、$代表行的結束。love$ 如:與所有love結尾的行匹配
那么‘^$’ 就表示空行
通配符
檢索wang.txt文件中匹配小寫字母a到z之間的。
注意:
[abc]表示匹配單個字符a或b或c
[123]表示匹配單個字符1或2或3
[A-Z]表示匹配大寫字母A-Z之間一個
[^a]表示取反,匹配除去小寫字母a的。
5、* 用于修飾前導字符,表示前導字符出現0次或任意多次
檢索wang.txt文件中出現0次或多次T的
6、\? 用于修飾前導字符,表示前導字符出現0或1次
7、\+ 用于修飾前導字符,表示前導字符出現1或多次
8、\{n,m\} 用于修飾前導字符,表示前導字符出現n至m次 (n和m都是整數,且n<m)
表示前導字符出現n至m次;
n/m為整數,并且m>n;
其他形式:
\{n\}連續的n個前導字符;
\{n,\}連續的至少n個前導字符;
檢索wang.txt文件中出現2至4個n的
9、\ 用于轉義緊跟其后的單個特殊字符,使該特殊字符成為普通字符
檢索wang.txt文件中含有.的。
10、|表示或 如: a|b|c 匹配a或b或c。如:grep|sed匹配grep或sed
檢索wang.txt文件中含有a或b的。
11、(),將部分內容合成一個單位組,比如 要搜索 glad 或 good 可以如下 'g(la|oo)d'
二、grep命令的用法
參數:
1. -A NUM,--after-context=NUM 除了列出符合行之外,并且列出后NUM行。
列出chai.txt文件中Tom行與后倆行
2. -B NUM,--before-context=NUM 與 -A NUM 相對,但這此參數是顯示除符合行之外并顯示在它之前的NUM行。
列出chai.txt文件中Tom行與前倆行。
3、 -C [NUM], -NUM, --context[=NUM] 列出符合行之外并列出上下各NUM行,默認值是2。
列出chai.txt文件中Tom行與前后倆行。
4、 -c, --count 不顯示符合樣式行,只顯示符合的總行數。若再加上-v,--invert-match,參數顯示不符合的總行數
列出chai.txt文件中含有Tom的行數;
列出chai.txt文件中不含有Tom的行數。
5、-i,--ignore-case 忽略大小寫差別
列出chai.txt文件中含有tom(大小寫)的行。
6、-n,--line-number 在匹配的行前面打印行號
列出chai.txt文件中含有tom(大小寫)的行,并且打印出行號。
7、-v,--revert-match 反檢索,只顯示不匹配的行
列出chai.txt文件中不含有tom的行。
8、精確匹配:
例如在抽取字符串“ 48”,返回結果包含諸如484和483等包含“48”的其他字符串,實際上應精確抽取只包含48的各行。
精確列出chai.txt文件中含有30的行。
9、-s 不顯示不存在或無匹配文本的錯誤信
xin.txt文件不存在,檢索時候提示搜索不到的錯誤信息,
如果不要錯誤信息提示,則加上-s。
三、sed命令的用法
1sed是一種在線編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern space),接著用sed命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往屏幕。
2把緩沖區的內容送往屏幕。接著處理下一行,這樣不斷重復,直到文件末尾。
3文件內容并沒有改變,除非你使用重定向存儲輸出。
1.替換: s命令
1.1 基本用法
把chai.txt中The替換成chai,輸出到aaa.txt文件中。
sed 替換命令
/../../分隔符(可以用其他符合代替)
The 搜索的字符串
chai 替換的字符串
<chai.txt> 搜索的文件
aaa.txt 輸出到的文件
1.2 用 & 表示匹配的字符串
有時可能會想在匹配到的字符串周圍或附近加上一些字符 .
如: sed 's/abc/(abc)/' <old >new
sed 默認只替換搜索字符串的第一次出現 , 利用 /g 可以替換搜索字符串所有
如果需要對同一文件或行作多次修改,可以使用 "-e" 選項
3.刪除行:d命令
從某文件中刪除包含 "how" 的所有行
將passwd內容顯示并打印行號,同時刪除2到5行。
nl命令在linux系統中用來計算文件中行號。nl 可以將輸出的文件內容自動的加上行號。
4.增加行:a命令(在指定的行后新增)或i命令(在指定的行前新增)
a的后面可以接字符串,而這些字符串會在新的一行出現
在/etc/passwd的第二行后增加“XXXXX”字樣的新行
將passwd內容顯示并打印行號,同時在第二行后新增hello。
將passwd內容顯示并打印行號,同時在第二行前新增hello。
如果要同時新增多行,則每行之間要用反斜杠\來進行新行的添加
5、取代行:c命令
c的后面可以接字符串,這些字符串可以取代n1,n2之間的行
取代行
將passwd內容顯示并打印行號,同時取代2到5行間內容。
6、打印:p命令
sed '/north/p' datafile 默認輸出所有行,找到north的行重復打印
僅列出passwd文件中的第5到7行內容。
sed 的-i選項可以直接修改文件中的內容
6.擴展:
調用sed有三種方式:
l 在命令行鍵入命令
l 將sed命令插入腳本文件,然后調用sed
l 將sed命令插入腳本文件,并使sed腳本可執行。
A、 使用sed命令行格式為:
sed [選項] sed命令 輸入文件。
記住在命令行使用sed命令時,實際命令要加單引號。sed也允許加雙引號。
B、使用sed腳本文件,格式為:
sed [選項] -f sed腳本文件 輸入文件
C、要使用第一行具有sed命令解釋器的sed腳本文件,其格式為:
sed腳本文件 [選項] 輸入文件
第一行是sed命令解釋行。腳本在這一行查找sed以運行命令,這里定位在/bin。
第二行以/company/開始,這是附加操作起始位置。a\通知sed
是一個附加操作,首先應插入二個新行。
第三、四行是附加操作要加入到拷貝的實際文本。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。