1. 程式人生 > >shell學習文件操作之sort,cut,uniq

shell學習文件操作之sort,cut,uniq

3

linux系統使用過程中,我們經常需要對文件進行一些操作分析,例如對文本進行分類排序,去重,截取一些規則化字段。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