Linux系列:shell編程之文檔操作(1)
1、wc命令功能:統計文件行數、單詞數等功能。
# wc常用選項。后面帶了###,表示常用的。 -l:統計多少行 ### -w:統計字數 ### -c:統計文件字節數,一個英文字母1字節,一個漢字占2-4字節(根據編碼) -m:統計文件字符數,一個英文字母1字符,一個漢字占1個字符 -L:統計最長行的長度,也可以統計字符串長度 ### -help:顯示幫助信息 -version:顯示版本信息
操作如下:
[hadoop@image1 shell]$ cat wc.txt aaa ssss ttttt bbbbbb;llll ffffffffffffffff gggggggggg [hadoop@image1 shell]$ wc wc.txt 4 6 61 wc.txt 行數 單詞數 字節數 文件名 # -l 統計文件有多少行 [hadoop@image1 shell]$ wc -l wc.txt 4 wc.txt [hadoop@image1 shell]$ cat wc.txt | wc -l 4 # -w 統計文件單詞數 [hadoop@image1 shell]$ wc -w wc.txt 6 wc.txt [hadoop@image1 shell]$ cat wc.txt | wc -w 6 # -L 統計最長行的長度。空格也算 [hadoop@image1 shell]$ wc -L wc.txt 20 wc.txt # -L 還可以統計字符串的長度 [hadoop@image1 shell]$ echo "abc" | wc -L 3
2、sort命令功能:排序(默認把整行作為整體,進行排序)
# 常用選項 -f:忽略字母大小寫,就是將小寫字母視為大寫字母排序 -M:根據月份比較,比如JAN、DEC -h:根據易讀的單位大小比較,比如2K、1G -g:按照常規數值排序 -n:根據字符串數值比較 -r:倒序(降序)排序 ### -k:位置1,位置2根據關鍵字排序,在從第位置1開始,位置2結束 ### -t:指定分隔符 ### -u:去除重復行 ### -o:將結果寫入文件
默認把每一行看成一個整體,進行排序。
將數據按照指定分隔符分割,然后按照分割后的第二列數據,進行排序。
將數據按照指定分隔符分割,然后按照分割后的第二列數據,進行排序。若分裂后的第二列數據相同,就按照第三列降序。
刪除重復行。既可以去除相鄰行的重復,也可以去重不相鄰行的重復。與下面的uniq進行對比學習。
3、uniq命令功能:去重。只能去除相鄰行。
# 常用選項 -c:打印出現的次數 -d:只打印重復行。 -u:只打印不重復行。 -D:只打印重復行,并且把所有重復行打印出來 -f N:比較時跳過前N列 -i:忽略大小寫 ### -s N:比較時跳過前N個字符 -w N:對每行第N個字符以后內容不做比較
操作如下:
uniq命令結合sort命令的幾種用法。
4、一個簡單案例:求兩個文件的并集。
原始文件如下:
操作如下:
[hadoop@image1 shell]$ cat a.txt b.txt | sort -r | uniq > c.txt [hadoop@image1 shell]$ cat c.txt g f e d c b a
解釋如下:
我們對所查看內容,先試用“sort -r”做一個降序排序,然后使用“uniq”進行去重, 最后使用“>”重定向到c.txt中。 一個“>”代表覆蓋原有內容。兩個“>>”代表追加在原文件之后。 注意:交集,差集使用uniq中參數一樣可以寫出來。自己可以下去練練手。
5、cut命令功能:從一個文本文件或者文本流中提取文本列。
常用選項
-d:后面接分隔字符。與 -f 一起使用 -f:依據 -d 的分隔字符將一段信息分割成為數段,用 -f 取出第幾段的意思 -c:按照字符截取 -b:按照字節截取
操作如下:
再舉一個例子加深印象:
[hadoop@image1 shell]$ cat cut.txt 黃渤 huangbo 18 jiangxi 徐崢 xuzheng 22 hunan 王寶強 wangbaoqiang 44 liujiayao [hadoop@image1 shell]$ cut -d " " -f 1,3 cut.txt 黃渤 18 徐崢 22 王寶強 44
linux Shell
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。