正則表達式:處理字符串的方法,以行爲單位進行字符串的處理行爲,正則表達式經過一些特殊符號的輔助,讓用戶輕易達到查找、刪除、替換某特定字符串的處理程序。git
正則表達式基本上是一種「表示法」,只要工具程序支持這種表示法,那麼該工具程序就能夠用來做爲正則表達式的字符串處理之用。正則表達式
基礎正則表達式
語系對正則表達式的影響;工具
- LANG=C時:0 1 2 3 4 。。。 A B C D … Z a b c d 。。。 z
- LANG=zh_CN時:0 1 2 3 4 … a A b B c C d D … z Z
使用正則表達式時,須要特別留意當時的環境語系,不然會發現與別人不一樣的選取結果編碼
爲了不編碼所形成的英文與數字選取的問題,特殊符號:命令行
- [:alnum:] 英文大小寫字符及數字
- [:alpha:]英文大小寫字符
- [:upper:]英文大寫字符
- [:lower:]英文小寫字符
- [:digit:]數字
grep [-A] [-B] [—color==auto] ‘搜尋的字符串’filename
參數:
-A:後面可加數字,爲after的意思,除了列出該行外,後續的n行也列出來
-B:後面可加數字,爲befor的意思,除了列出該行外,前面的n行也列出來
- 語系已經使用「export LANG=C」的設置值
- grep已經使用alias設置成爲「grep –-color==auto」
查找特定的字符串字符串
利用中括號[]來查找集合字符字符串處理
行首和行尾字符^$it
^符號在字符集和符號(中括號[])以內和以外是不一樣的,在[]內表明「反向選擇」,在[]以外表明定位在行首io
找出空白行:^$(只有行首和行尾)function
任意一個字符.(小數點):表明必定有一個任意字符
與重複字符*(星號):表明重複前一個字元,0到無窮屢次的意思
「.*」表明零個或任意多個字符的意思
限定連續RE字符的範圍{}:必須使用轉義字符 \
正則表達式的特殊字符與通常在命令行輸入命令的「通配符」並不相同
sed工具
sed [-nefr] 動做
參數:
-n:使用安靜模式,在通常sed用法中,全部來自STDIN的數據通常都會列出到屏幕上,但若是加上參數-n後,則只有通過sed特殊處理的哪一行(或操做)纔會被列出來
-e:直接在命令行模式上進行sed的動做編輯
-f:直接將sed的動做寫在一個文件內,-f filename則能夠執行filename內的sed動做
-r:sed的動做支持擴展型正則表達式語法(默認是基礎型正則表達式語法)
-i:直接修改讀取的文件內容,而不是由屏幕輸出
動做說明:
[n1,[n2]] function
n1,n2:通常表明選擇進行動做的行數
function有以下參數:
a:新增
c:替換
d:刪除
i:插入
p:打印
s:替換,’s/要被替換的字符/新的字符串/g’
sed後邊接的動做,務必以「兩個單引號括住
$表明最後一行
新增好幾行的時候,每一行中間必需要以反斜槓來進行新行的增長
awk:好用的數據處理工具
sed經常做用於一整行的處理,awk比較傾向於將一行分紅數個」字段「來處理。所以,awk至關適合處理小型的數據處理
awk ‘條件類型1[動做1]條件類型2[動做2]…’filename
awk主要處理每一行的字段內的數據,而默認的字段的分隔符爲空格鍵或[Tab]鍵
每一行的每個字段都有變量名稱,$1,$2。$0表明一整行數據的意思
整個awk的處理流程是:
- 讀入第一行,並將第一行的數據填入變量名稱中
- 依據條件類型的限制,判斷是否須要進行後面的操做
- 作完全部的動做與條件類型
- 若還有後續的」行「的數據,重複以上1~3步驟,直到全部的數據都讀完爲止
awk以行爲一次處理的單位,而以字段爲最小處理的單位
awk內置變量:
- NF:每一行擁有的字段總數
- NR:目前awk所處理的是」第幾行「的數據
- FS:目前的分隔符,默認是空格鍵
awk邏輯運算符:> < >= <= == !=
- 全部awk的動做,即在{}內的動做,若是有須要多個命令輔助時,可利用分號;間隔,或者直接以【enter】鍵來隔開每一個命令
- 邏輯運算當中,若是是」等於「的狀況,務必使用==
- 格式化輸出時,在printf的格式設置中,務必加上\n,才能進行分行
- 變量能夠直接使用,不須要加上$號
文件比較工具
同一個軟件的不一樣版本之間,比較配置文件與源文件的區別。
diff:以行爲單位比較,通常用在ASCII純文本文件的比較上。一般是用在同一的文件(或軟件)的新舊版本區別
diff [-bBi] from-file to-file
參數:
-b:忽略一行當中僅有多個空白的區別
-B:忽略空白行的區別
-i:忽略大小寫
cmp [-s] file1 file2
主要利用」字節「單位去比較
參數:
-s:將全部不一樣點的字節都列出來,由於cmp默認僅會輸出第一個發現的不一樣點
patch
將區別文件製做成補丁文件:
dif –Naur 舊文件 新文件 > *.patch
更新:patch –pN < patch_file
還原:patch –R –pN < patch_file
參數:
-p:後面的N表示取消幾層目錄
-R:表明還原,將新的文件還原成舊的版本
文件打印準備:pr