shell學習文件操作之sort,cut,uniq
阿新 • • 發佈:2018-04-22
3linux系統使用過程中,我們經常需要對文件進行一些操作分析,例如對文本進行分類排序,去重,截取一些規則化字段。cut,sort,uniq很方便使用。
1.sort:一般有三種模式,分別為排序文本,檢查文件,合並文件。
常用方法及參數
sort [option] [file]
-b,#忽略前空格或者制表符
-d, #根據字典順序排序,僅比較數字,字母和空字符
-f, #忽略大小寫
-i, #僅僅比較可打印文件
-n, #根據算術值比較,空格,十進制數字等。
-R, #根據哈希值隨機排序
-r, #顛倒排序結果
-u,#刪除重復的行,只保留一個文件
[root@node-2 home]# cat text 1 1 2 2 3 4 3 33 5 1 44 11 5 6 7 8 A 9 11 10 11 [root@node-2 home]# sort text #默認比較首個字符的hash值來排序 1 1 1 10 11 11 11 2 2 3 3 33 4 44 5 5 6 7 8 9 A [root@node-2 home]# sort -n text #按照數值排列 A 1 1 1 2 2 3 3 4 5 5 6 7 8 9 10 11 11 11 33 44 [root@node-2 home]# sort -nr text #倒序 44 33 11 11 11 10 9 8 7 6 5 5 4 3 3 2 2 1 1 1 A [root@node-2 home]# sort -R text #隨機排序 44 7 8 1 1 1 9 2 2 11 11 11 A 5 5 3 3 33 10 6 4
2.cut命令:有時候文件按照列成規律性的排列,我們需要取出莫一列或者幾列數據,就可以使用cut命令從垂直方向去選取部分。
常用方法及參數:
cut options [file]
-d #自定義分隔符
-c #只選擇指定字符
-f #只選擇列表中指定的文本列,文本列用列號表示,多個列用逗號隔開
-s #不輸出不包含列分隔符的行
例子:查看/etc/passwd文件,取出所有的用戶以及對應的uid,gid以及家目錄 [root@node-2 home]# cut -d":" -f 1,3,4,7 /etc/passwd|head -n10 root:0:0:/bin/bash bin:1:1:/sbin/nologin daemon:2:2:/sbin/nologin adm:3:4:/sbin/nologin lp:4:7:/sbin/nologin sync:5:0:/bin/sync shutdown:6:0:/sbin/shutdown halt:7:0:/sbin/halt mail:8:12:/sbin/nologin uucp:10:14:/sbin/nologin [root@node-2 home]#
3.uniq:uniq命令用於檢查及刪除文本文件中重復出現的行列
-c # 在每列旁邊顯示該行重復出現的次數。
-d #僅顯示重復出現的行列。
-u #僅顯示出一次的行列
--help #顯示幫助。
--version #顯示版本信息。
[root@node-2 home]# sort -n text A 1 1 1 2 2 3 3 4 5 5 6 7 8 9 10 11 11 11 33 44 [root@node-2 home]# sort -n text|uniq -c #顯示出現的次數 1 A 3 1 2 2 2 3 1 4 2 5 1 6 1 7 1 8 1 9 1 10 3 11 1 33 1 44 [root@node-2 home]# sort -n text|uniq -u #顯示只出現過一次的 A 4 6 7 8 9 10 33 44 [root@node-2 home]# sort -n text|uniq -d #顯示重復出現的 1 2 3 5 11 [root@node-2 home]#
生成一個55以內的隨機數
[root@node-2 home]# seq 55|sort -R|head -1
4
shell學習文件操作之sort,cut,uniq