返回介绍

Hack-14 Sort 命令

发布于 2025-03-08 17:38:19 字数 1963 浏览 0 评论 0 收藏 0

Sort 命令

一般来说命令的命名都是跟命令的作用有关的,嗯,我莫名想到了 thefuck ... (逃

sort 就是用来排序的,没错,给文件内容排序:

➤ for i in {1..10};do echo $((RANDOM/20)) >> random; done
➤ cat random 
1164
1522
69
1470
1232
642
1494
12
543
685
➤

然后我们 sort 一下:

➤ sort random 
1164
12
1232
1470
1494
1522
543
642
685
69
➤ sort -n random 
12
69
543
642
685
1164
1232
1470
1494
1522
➤

是不是很好玩? 最后一个数字竟然是 69 ... 我好污...

再来个例子:

➤ cat passwd 
root:x:0:0
daemon:x:1:1
bin:x:2:2
sys:x:3:3
sync:x:4:65534
games:x:5:60
man:x:6:12
lp:x:7:7
mail:x:8:8
news:x:9:9
➤

我们先不带任何参数的排一下序:

➤ sort passwd 
bin:x:2:2
daemon:x:1:1
games:x:5:60
lp:x:7:7
mail:x:8:8
man:x:6:12
news:x:9:9
root:x:0:0
sync:x:4:65534
sys:x:3:3
➤

看到了吗, sort 按照首字母排序了。

这次我们按照最后一个字段进行排序:

➤ sort -t : -k 4 passwd 
root:x:0:0
daemon:x:1:1
man:x:6:12
bin:x:2:2
sys:x:3:3
games:x:5:60
sync:x:4:65534
lp:x:7:7
mail:x:8:8
news:x:9:9

好像不太对,再加个参数呢:

➤ sort -n -t : -k 4 passwd 
root:x:0:0
daemon:x:1:1
bin:x:2:2
sys:x:3:3
lp:x:7:7
mail:x:8:8
news:x:9:9
man:x:6:12
games:x:5:60
sync:x:4:65534

是不是看起来爽多了?

作者的这个例子很不错:

sort -t . -k 1,1n -k 2,2n -k 3,3n -k 4,4n /etc/hosts
127.0.0.1 localhost.localdomain localhost
192.168.100.101 dev-db.thegeekstuff.com dev-db
192.168.100.102 prod-db.thegeekstuff.com prod-db
192.168.101.20 dev-web.thegeekstuff.com dev-web
192.168.101.21 prod-web.thegeekstuff.com prod-web

把 IP 地址排序,可以研究下他是怎么做到的。

最后原作者还介绍了几套组合拳:

  • ps –ef | sort #给进程排序
  • ls -al | sort -nk 5 #根据文件大小进行排序
  • ls -al | sort -nrk 5 #根据文件大小反向排序

注意,这里跟原著有差别哦,因为我按照原著上的并没有成功,我的系统是 Ubuntu 15.10

本书简介:

  • Linux 进阶技巧
  • 巧妙的命令组合
  • Bash 某些技巧
  • 一共一百零一个(包括充数的)
  • 最后有个奖励章(额外技巧)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文