歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> 《鳥哥的Linux私房菜—基礎學習篇》正則表達式與文件格式化處理

《鳥哥的Linux私房菜—基礎學習篇》正則表達式與文件格式化處理

日期:2017/3/1 16:50:06   编辑:關於Linux
《鳥哥的Linux私房菜—基礎學習篇》正則表達式與文件格式化處理 正則表達式:處理字符串的方法,以行為單位進行字符串的處理行為,正則表達式通過一些特殊符號的輔助,讓用戶輕易達到查找、刪除、替換某特定字符串的處理程序。 www.2cto.com 正則表達式基本上是一種“表示法”,只要工具程序支持這種表示法,那麼該工具程序就可以用來作為正則表達式的字符串處理之用。 基礎正則表達式 語系對正則表達式的影響; 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 使用正則表達式時,需要特別留意當時的環境語系,否則會發現與別人不同的選取結果 為了避免編碼所造成的英文與數字選取的問題,特殊符號: www.2cto.com [: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” 查找特定的字符串 利用中括號[]來查找集合字符 行首和行尾字符^$ ^符號在字符集和符號(中括號[])之內和之外是不同的,在[]內代表“反向選擇”,在[]之外代表定位在行首 找出空白行:^$(只有行首和行尾) 任意一個字符.(小數點):代表一定有一個任意字符 與重復字符*(星號):代表重復前一個字元,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,才能進行分行 變量可以直接使用,不需要加上$號 文件比較工具 同一個軟件的不同版本之間,比較配置文件與源文件的區別。 www.2cto.com 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
Copyright © Linux教程網 All Rights Reserved