bash - 按字典顺序选择和排序 IP 地址
问题描述
我正在使用以下命令按字典顺序对所有 IP 地址进行排序。
find /root/data -type f -exec grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)" {} \; | sort | uniq -c | awk '{print $2}'
我应该得到这个预期的输出:
0.0.0.0
127.0.0.1
127.0.49.1
127.0.64.1
127.65.64.1
127.98.0.1
128.128.4.11
128.57.107.76
128.68.4.11
128.96.107.55
128.99.107.55
128.99.58.55
15.128.4.65
26.56.4.23
67.128.4.11
7.7.7.8
74.0.65.76
77.255.255.254
查找命令的输出:
127.0.0.1
128.99.107.55
128.128.4.11
74.0.65.76
15.128.4.65
0.0.0.0
127.65.64.1
127.0.64.1
127.0.0.1
128.57.107.76
67.128.4.11
7.7.7.8
127.98.0.1
128.96.107.55
128.68.4.11
127.0.49.1
128.99.58.55
77.255.255.254
26.56.4.23
如何根据预期的输出对其进行排序。
解决方案
该-t
选项告诉sort
使用句点作为字段分隔符。这些-k
选项告诉 sort 要使用哪些字段。注意:要按数字顺序排序,请添加-n
选项。
sort -t. -k1 -k2 -k3 -k4 unsorted
输出:
0.0.0.0
127.0.0.1
127.0.0.1
127.0.49.1
127.0.64.1
127.65.64.1
127.98.0.1
128.128.4.11
128.57.107.76
128.68.4.11
128.96.107.55
128.99.107.55
128.99.58.55
15.128.4.65
26.56.4.23
67.128.4.11
7.7.7.8
74.0.65.76
77.255.255.254
推荐阅读
- java - 如果选中复选框,该怎么办?
- php - Framework7 Vue 承诺 postJson CORS 问题
- python - 使用 Tkinter 创建复选框,然后将选定框的值放入列表中
- swift - 边框 TableView 部分
- codenameone - 如何在 theme.css 中选择原生等宽字体?
- python - 如何建造 | 编写一个 Indeed 机器人来自动申请应用程序?
- php - 为我的项目创建搜索和显示功能,但无法从数据库中获取结果以显示
- angular - 将输入设置为空值的角度问题
- javascript - stencil js,将数组作为自定义元素中的属性值传递
- html - 有条件地将 HTML 列表一分为二