正則表達式與文件格式化處理正則表達式
基礎正則表達式字符彙整 (characters)bash
sed 工具工具
sed 自己也是一個管線命令,能夠分析 standard input 的啦! 並且 sed 還能夠將數據進行取代、刪除、新增、擷取特定行等等的功能呢。
複製代碼
範例一:將 /etc/passwd 的內容列出而且打印行號,同時,請將第 2~5 行刪除!spa
[dmtsai@study ~]$ nl /etc/passwd | sed '2,5d'
1 root:x:0:0:root:/root:/bin/bash
6 sync:x:5:0:sync:/sbin:/bin/sync
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
複製代碼
延伸正則表達式3d
文件的格式化與相關處理code
格式化打印: printfcdn
範例一:將剛剛上頭數據的文件 (printf.txt) 內容僅列出姓名與成績:(用 [tab] 分隔)
[dmtsai@study ~]$ printf '%s\t %s\t %s\t %s\t %s\t \n' $(cat printf.txt)
Name Chinese English Math Average
DmTsai 80 60 92 77.33
VBird 75 55 80 70.00
Ken 60 90 70 73.33
複製代碼
awk:好用的數據處理工具blog
awk 也是一個很是棒的數據處理工具!相較於 sed 經常做用於一整個行的處理, awk 則比較 傾向於一行當中分紅數個「字段」來處理。所以,awk 至關的適合處理小型的數據數據處理呢! awk 一般運行的模式是這樣的:input
[dmtsai@study ~]$ awk '條件類型1{動做1} 條件類型2{動做2} ...' filename
複製代碼
若我想要取出賬號與登錄者的 IP ,且賬號與 IP 之間以 [tab] 隔開,則會變成這樣:it
[dmtsai@study ~]$ last -n 5 | awk '{print $1 "\t" $3}'
dmtsai 192.168.1.100
dmtsai 192.168.1.100
dmtsai 192.168.1.100
dmtsai 192.168.1.100
dmtsai Fri
複製代碼
文件比對工具
diff
範例一:比對 passwd.old 與 passwd.new 的差別:
[dmtsai@study testpw]$ diff passwd.old passwd.new
4d3 <==左邊第四行被刪除 (d) 掉了,基準是右邊的第三行
< adm:x:3:4:adm:/var/adm:/sbin/nologin <==這邊列出左邊(<)文件被刪除的那一行內容
6c5 <==左邊文件的第六行被取代 (c) 成右邊文件的第五行
sync:x:5:0:sync:/sbin:/bin/sync <==左邊()文件第六行內容
> no six line <==右邊(>)文件第五行內容
複製代碼
很聰明吧!用 diff 就把咱們剛剛的處理給比對完畢了!
patch patch 這個指令與 diff 但是有密不可分的關係啊!咱們前面提到,diff 能夠用來分辨兩個版本 之間的差別, 舉例來講,剛剛咱們所建立的 passwd.old 及 passwd.new 之間就是兩個不一樣版 本的文件。 那麼,若是要「升級」呢?就是「將舊的文件升級成爲新的文件」時,應該要怎麼作 呢? 其實也不難啦!就是「先比較先舊版本的差別,並將差別檔製做成爲補丁文件,再由補丁 文件更新舊文件」便可。