shell 正則表達式

Ps:本內容摘自鳥哥的私房菜正則表達式

前言:正則表達式本質是一種格式化的「字符串」,由相應標準的程序執行。工具

grep 'mail' /etc/rc.d/*ci

grep [-acinv] '搜尋字符串' filename
參數說明:
-a: 將binary 檔案以text檔案的方式搜尋數據
-c: 計算找到'搜尋字符串'的次數
-i: 忽略大小寫的不一樣,因此大小寫視爲相同
-n: 順便輸出行號
-v: 反向選擇,亦即顯示出沒有'搜尋字符串'內容的那一行!字符串

舉例:不支持正規表示法的ls,若咱們使用[ls -l *]表明的是任意檔名的檔案,[ls -l a*]表明的是以a爲開頭的任意檔名的檔案;但在正則表示法中,咱們要找到含有以a爲開頭的檔案,則必須搭配支持正則表示法的工具:ls | grep -n '^a.*' input


sed [-nefr] [動做]
-n:使用安靜(silent)模式。在通常sed的用法中,全部來自STDIN的數據通常都會被列出到屏幕上。
但若是加上 -n 參數後,則只有通過sed特殊處理的那一行(或者動做)纔會被列出來。
-e:直接在指令列模式上進行sed的動做編輯;
-f:直接將sed的動做寫在一個檔案內,-f filename則能夠執行filename內的sed動做;
-r:sed的動做支持的是延伸型正則表示法的語法。(預設是基礎正則表達式)io

動做說明:[n1[,n2]]function
n1,n2: 不見得會存在,通常表明[選擇進行動做的行數]。
舉例來講,若是個人動做在10到20行之間進行,則[10,20[動做行爲]]。function

function 包含以下:
a: 新增,a的後面能夠接字符串,而這些字符串會在新的一行出現(目前的下一行)
c: 取代,c的後面能夠接字符串,而這些字符串能夠n1,n2之間的行!
d: 刪除,由於是刪除啊,因此d後面一般不接任何東西。
i: 插入,i的後面能夠接字符串,而這些字符串會在新的一行出現(目前的上一行)
p: 打印,亦即將某個選擇的數據印出。一般p會與參數sed -n 一塊兒動做
s: 取代,能夠直接進行取代的工做!一般這個s的動做能夠搭配正規表示法!
例如: 1,20s/old/new/gawk


awk:傾向於一行當中分紅數個【字段】來處理,適合處理小型的數據處理。
awk一般運做的模式是這樣:awk '條件類型1{動做1} 條件類型2{動做2} ...' filename
awk是[以行爲一次處理的單位],而[以字段爲最小的處理單位]
awk的內置變量:
變量名稱    表明意義
NF  每一行($0)擁有的字段總數
NR  目前awk所處理的是[第幾行]數據
FS  目前的分隔字符,預設是空格鍵基礎

diff [-bBi] from_file to_file
注意:from_file 或 to_file 能夠 - 取代,表明 【standard input】之意
-b 忽略一行當中,僅有多個空白的差別
-B 忽略空白行的差別
-i 忽略大小寫的不一樣變量

相關文章
相關標籤/搜索