1) sort 用于排序的命令
sort文件 | |
---|---|
-n | 对数字排序 |
-r | 逆序排序 |
– | – |
-k | 指定某列 -k1 指定多列-k -k2,-k1.1 根据第1列的第1个字符进行排序 |
-t | 指定分隔符 |
案例1 对数字进行排序
[root@fudao oldboy]# cat sort.txt
1
3
2
5
9
1
222
777
0000
111
203
x888
88x
793
567
793
3232
5843
x
[root@fudao oldboy]# sort -n sort.txt
0000
x
x888
1
1
2
3
5
9
88x
111
203
222
567
777
793
793
3232
5843
#对数字的逆排序
[root@fudao oldboy]# sort -rn sort.txt
5843
3232
793
793
777
567
222
203
111
88x
9
5
3
2
1
1
x888
x
0000
对指定的某一列进行排序(如第二列)
[root@fudao oldboy]# cat sort-v1.txt | column -t
王斌 23 180
wangwen 30 178
dwang 19 170
mingjnig 16 162
childblood 5 80
smile 23 179
[root@fudao oldboy]# sort -nk2 sort-v1.txt | column -t
childblood 5 80
mingjnig 16 162
dwang 19 170
smile 23 179
王斌 23 180
wangwen 30 178
#逆序 sort -rnk2 sort-v1.txt | column -t
企业面试题案例:对 etc/目录下的 文件、目录、大小排序(取前后6行)
1.1 显示文件 目录大小 | ls-l |
---|---|
1.2 排序 | sort |
1.3 取前后6行 | head 、tail |
#1. 显示大小
ls -l /etc/
#2. 排序
ls -l /etc/ | sort -nk5
ls -l /etc/ | sort -rnk5
#3. 取出 前10个
ls -l /etc/ | sort -rnk5 | head 6
sort进阶内容 对多列进行排序
[root@fudao oldboy]# sort -rn -k2 -k3 sort-v1.txt |column -t
wangwen 30 178 就业1班
李明 29 172 就业1班
王浩 28 166 就业1班
李明 27 182 就业1班
李明 25 183 就业1班
王斌 23 180 就业1班
smile 23 179 就业1班
李明 23 177 就业1班
李明 22 176 就业1班
李明 22 167 就业1班
李明 21 175 就业1班
李明 20 185 就业1班
dwang 19 170 就业1班
mingjnig 16 162 就业1班
childblood 5 80 就业1班
面试题:排序的题目 以.为分隔符按照第3列,然后第4列进行从小到大排序.
2.案例2
cat >/fudao/sort-ip.txt<<EOF
192.168.3.1 00:0F:AF:81:19:1F
192.168.3.2 00:0F:AF:85:6C:25
192.168.3.3 00:0F:AF:85:70:42
192.168.2.20 00:0F:AF:85:55:DE
192.168.2.21 00:0F:AF:85:6C:09
192.168.2.22 00:0F:AF:85:5C:41
192.168.0.151 00:0F:AF:85:6C:F6
192.168.0.152 00:0F:AF:83:1F:65
192.168.0.153 00:0F:AF:85:70:03
192.168.1.10 00:30:15:A2:3B:B6
192.168.1.11 00:30:15:A3:23:B7
192.168.1.12 00:30:15:A2:3A:A1
192.168.1.1 00:0F:AF:81:19:1F
192.168.2.2 00:0F:AF:85:6C:25
192.168.3.3 00:0F:AF:85:70:42
192.168.2.20 00:0F:AF:85:55:DE
192.168.1.21 00:0F:AF:85:6C:09
192.168.2.22 00:0F:AF:85:5C:41
192.168.0.151 00:0F:AF:85:6C:F6
192.168.1.152 00:0F:AF:83:1F:65
192.168.0.153 00:0F:AF:85:70:03
192.168.3.10 00:30:15:A2:3B:B6
192.168.1.11 00:30:15:A3:23:B7
192.168.3.12 00:30:15:A2:3A:A1
EOF
sort -t'.' -rn -k3,3 -k4,4 sort-ip.txt
其中以.为分隔符按照第3列,然后第4列进行从小到大排序 就用 “.” 或 ‘.’ 。k3,3 是第三列开始到到第三列结束。
案例03
想先对第2列排序,第2列如果有一样的则对第4列排序 (对2列排序)其中 column-t对齐
[root@fudao~]# sort -rn -k2 -k4 sort-list.txt |column -t
oldboy 40 linux学院 20000
oldgirl 22 linux学院 30000
lidao996 18 linux学院 0
xiaozhang 16 linux学院 99999
fu5 8 linux学院 25000
old6 8 linux学院 15000
fu1 7 linux学院 50000
old3 7 linux学院 40400
old2 7 linux学院 30300
old4 7 linux学院 30100
uniq (unique) | (去重并显示次数)合并文件中相邻的相同的行,同时可以显示次数 |
---|---|
-c | 去重并统计次数 |
案例02 统计文件中uniq.txt,每个名字出现的次数(去重并显示次数) 有些名字不是相邻的,则需要重新排序sort。
写入txt文件:
cat >/oldboy/uniq.txt<<eof
aaa
bbb
aaa
ccc
aaa
bbb
ddd
ddd
ccc
ccc
ccc
ccc
reee
reee
reee
deee
seee
deee
seee
seee
[root@fudao oldboy]# sort -rn uniq.txt|uniq -c
3 seee
3 reee
2 deee
2 ddd
5 ccc
2 bbb
3 aaa
总结:
复制粘贴删除
复制当前行: yy
粘贴: p (paste)
剪切当前行: dd (delete)
命令:
sort
uniq
date
`` $()
vim 快捷键 : 移动光标 复制,粘贴,删除 搜索 显示行号 逐渐熟悉(批量操作,替换)
命令的组合搭配:
sort与uniq 搭配,去重统计次数
命令(touch /mkdir/ 压缩) 与反引号 date 命令,创建带有时间,日期的文件、目录、压缩包