sort的用法

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 命令,创建带有时间,日期的文件、目录、压缩包

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值