有點拖了,沒有好好整理之前的內容,拖延癥害死人…..
這次介紹一些有趣的小文本處理工具,可以方便截取文本內容、排序、備份之類的。
head
用法:head [選項]… [文件]…
head[OPTION]…[FILE]…
默認將每個指定文件的頭10行顯示到標準輸出。如果指定了多于一個文件,在每一段輸出前會給出文件名作為文件頭。如果不指定文件,或者文件為“-“,則從標準輸入讀取數據
-c –bytes=[-]k 顯示每個文件的前k字節內容;如果附加“-“參數,則除了每個文件的最后K字節數據外顯示剩余全部內容
-n –lines=[-]k 顯示每個文件的前k行內容;如果附加“-“參數,則除了每個文件的最后K 行外顯示剩余全部內容
-q –quiet,–silent 不顯示包含給定文件名的文件頭
-v –verbose 總是顯示包含給定文件名的文件頭
tail
tail[OPTION]…[FILE]…
tail – 輸出文件的末尾部分,默認在標準輸出上顯示每個文件的最后10行,如果多于一個文件會在每一段輸出前會給出文件名作為文件頭,一個接一個地顯示。如果不指定文件,或者文件為“-“,則從標準輸入讀取數據。
-c –bytes=N 輸出最后N個字節
-n –lines=N 輸出最后N行而非默認的最后10行
-q –quiet –silent 從不輸出給出文件名的首部
-v –verbose 總是輸出給出文件名的首部
-f –follow[={name|descriptor}] 當文件增長時輸出后續添加的數據,動態顯示。跟蹤顯示文件新追加的內容常用日志監控。
拓展:與head相似,如果N(字節或者行數)的第一個字符為`+’,那么從每個文件的開頭算起的第N項開始顯示,否則,顯示該文件的最后N項。
cut
按列抽取文本
cut[OPTION]…[FILE]…
-d –DELIMITER:指明分隔符,默認為Tab,一般與-f 連用。
-f 選取第幾列
n 指定某一列
n-m 指定n列到m列
n,n-m 混合指定
–output-delimiter 指定輸出符
示例:截取用戶名與UID且以“+”符號為分隔符。
cut -d: -f1,3 –output-delimiter=’+’ /etc/passwd
-c [n-m]按字符切割 第n個字符到第m個字符
-b [n-m]按字節切割 第n個字節到第m個字節
示例:截取/etc/passwd文件的前四個字符。
cut -c 1-4 /etc/passwd
經典練習題:顯示當前主機第一個網卡的IP地址
ifconfig |head -n 2| tail -n 1| tr -s ‘ ‘ : |cut -d: -f4
paste
將每個指定文件里的每一行整合到對應一行里寫到標準輸出,默認用制表符分隔。如果沒有指定文件,或指定文件為”-“,程序將從標準輸入讀取數據。
paste[OPTION]…[FILE]…
-d分隔符:指定分隔符,默認用TAB
-s: 不使用平行的行目輸出模式,而是每個文件占用一行
paste f1 f2
paste -s f1 f2
wc
收集文本統計數據
wc命令的功能為統計指定文件中的字節數、單詞數、行數并將統計結果顯示輸出
可以對文件或STDIN中的數據運行
-c –bytes 打印字節數
-m –chars 打印字符數
-l –lines 打印行數
-L –max-line-length 打印最長行的長度
-w –words 打印單詞數
sort
文本排序
把整理過的文本顯示在STDOUT,不改變原始文件
sort [options] file
常用選項
sort
-r 執行反方向(由上至下)整理?
-n 執行按數字大小整理
-f 選項忽略(fold)字符串中的字符大小寫
-u 選項(獨特,unique)刪除輸出中的重復行
-t c 選項使用c做為字段界定符
-k X 選項按照使用c字符分隔的X列來整理能夠使用多次
示例:
cat /etc/passwd | sort
#排序默認以第一個數據排序,默認以字符串形式排序,以a開始升序排序,首字母相同則比較下一位的順序。
cat /etc/passwd | sort -t: -k3
#/etc/passwd中的以“:”為間隔符,對其第三欄排序,默認以第一數據排序,相同的話比較下一位的順序。
cat /etc/passwd | sort -nt: -k3
#/etc/passwd中的以“:”為間隔符,對其第三欄排序,按數字整體大小升序排列。
cat /etc/passwd | sort -rnt: -k3
#/etc/passwd中的以“:”為間隔符,對其第三欄排序,按數字整體大小以升序相反的方式降序排列。
uniq
uniq命令:從輸入文件或者標準輸入中刪除前后相接的重復的行,注意:連續且完全相同方為重復
uniq[OPTION]…[FILE]…
-c –count 顯示每行重復出現的次數
-d –repeated 僅顯示重復過的行
-D –all-repeated[=delimit-method 顯示所有重復的行
-u –unique 僅顯示不曾重復的行
-f –skip-fields=N 比較時跳過前N 列
-s, –skip-chars=N 比較時跳過前N 個字符
-I –ignore-case 在比較的時候不區分大小寫
-w –check-chars=N 對每行第N 個字符以后的內容不作對照
常和sort命令一起配合使用:
sort test | uniq –c
接下來介紹比較實用的功能,需要diff與patch功能結合使用。
diff
比較兩個文件之間的區別
命令:diff
patch
讓用戶利用設置修補文件的方式,修改,更新原始文件。
命令:patch
上面兩條命令相結合可以做出大事——“打補丁”或“更新”
diff命令的輸出被保存在一種叫做“補丁”的文件中
使用-u選項來輸出“統一的(unified)”diff格式文
件,最適用于補丁文件。
patch復制在其它文件中進行的改變(注意:要謹慎使用)
適用-b選項來自動備份改變了的文件
示例:
換個角度,你也可以理解為對文件進行更新。同時,不要擔心舊版文件的丟失,每次更新都會產生后綴為“.orig”的文件,里面存儲著你的舊版文件。
原創文章,作者:Mozart,如若轉載,請注明出處:http://www.www58058.com/83083