*nix 命令行上的任务
A task on the *nix command line
有一个包含以下行的文件:host ip page。您需要输出 10 个比其他 IP 地址更常见的 IP 地址。
我想解决一个小问题。
请指教,您觉得这个解决方案怎么样?
sort list|uniq -c|sort -r|head -n 10
比如我有源文件(list.txt):
localhost1 144.12.34.245 page1
localhost2 144.12.34.241 page2
localhost3 144.12.34.242 page3
localhost4 144.12.34.243 page4
localhost4 144.12.34.243 page4
localhost4 144.12.34.243 page4
localhost5 144.12.34.244 page5
localhost5 144.12.34.244 page5
localhost5 144.12.34.244 page5
localhost5 144.12.34.244 page5
同一个ip地址可以有不同的主机和页面。它们由一个 space.
分隔
例如:
(localhost5 144.12.34.244 page5, localhost5 144.12.34.244
page6)
(localhost1 144.12.34.244 page5, localhost5 144.12.34.244
page6)
(localhost5 144.12.34.244 page5, localhost5 144.12.34.144
page5)
执行命令后得到结果:
4 localhost5 144.12.34.244 page5
3 localhost4 144.12.34.243 page4
1 localhost3 144.12.34.242 page3
1 localhost2 144.12.34.241 page2
1 localhost1 144.12.34.245 page1
几乎完美。
但我只想输出一个 ip 地址列表。没有主机和页面:
144.12.34.244
144.12.34.243
144.12.34.242
144.12.34.241
144.12.34.245
您在命令后添加:
| awk -F " " '{print }'
这意味着:
-F " " : separate your data in columns, the separator is a space.
'{print }' : this awk script says only to write the third column.
假设你想忽略主机名和页面字段,只计算IP地址,你可以使用
awk '{print }' input |sort|uniq -c|sort -nr|head -10|awk '{print }'
示例输入:
localhost1 144.12.34.245 page1
localhost2 144.12.34.241 page2
localhost3 144.12.34.242 page3
localhost4 144.12.34.243 page4
localhost4 144.12.34.243 page4
localhost4 144.12.34.243 page4
localhost5 144.12.34.244 page5
localhost5 144.12.34.244 page5
localhost5 144.12.34.244 page5
localhost5 144.12.34.244 page5
localhost5 144.12.34.244 page5
localhost5 144.12.34.244 page6
localhost1 144.12.34.244 page5
localhost5 144.12.34.244 page6
localhost5 144.12.34.244 page5
localhost5 144.12.34.144 page5
localhost5 144.12.34.0 page5
localhost5 144.12.34.1 page5
localhost5 144.12.34.2 page5
localhost5 144.12.34.3 page5
localhost5 144.12.34.4 page5
localhost5 144.12.34.5 page5
localhost5 144.12.34.6 page5
localhost5 144.12.34.7 page5
localhost5 144.12.34.8 page5
localhost5 144.12.34.9 page5
结果输出:
144.12.34.244
144.12.34.243
144.12.34.9
144.12.34.8
144.12.34.7
144.12.34.6
144.12.34.5
144.12.34.4
144.12.34.3
144.12.34.245
有一个包含以下行的文件:host ip page。您需要输出 10 个比其他 IP 地址更常见的 IP 地址。
我想解决一个小问题。 请指教,您觉得这个解决方案怎么样?
sort list|uniq -c|sort -r|head -n 10
比如我有源文件(list.txt):
localhost1 144.12.34.245 page1
localhost2 144.12.34.241 page2
localhost3 144.12.34.242 page3
localhost4 144.12.34.243 page4
localhost4 144.12.34.243 page4
localhost4 144.12.34.243 page4
localhost5 144.12.34.244 page5
localhost5 144.12.34.244 page5
localhost5 144.12.34.244 page5
localhost5 144.12.34.244 page5
同一个ip地址可以有不同的主机和页面。它们由一个 space.
分隔例如:
(localhost5 144.12.34.244 page5, localhost5 144.12.34.244 page6)
(localhost1 144.12.34.244 page5, localhost5 144.12.34.244 page6)
(localhost5 144.12.34.244 page5, localhost5 144.12.34.144 page5)
执行命令后得到结果:
4 localhost5 144.12.34.244 page5
3 localhost4 144.12.34.243 page4
1 localhost3 144.12.34.242 page3
1 localhost2 144.12.34.241 page2
1 localhost1 144.12.34.245 page1
几乎完美。 但我只想输出一个 ip 地址列表。没有主机和页面:
144.12.34.244
144.12.34.243
144.12.34.242
144.12.34.241
144.12.34.245
您在命令后添加:
| awk -F " " '{print }'
这意味着:
-F " " : separate your data in columns, the separator is a space.
'{print }' : this awk script says only to write the third column.
假设你想忽略主机名和页面字段,只计算IP地址,你可以使用
awk '{print }' input |sort|uniq -c|sort -nr|head -10|awk '{print }'
示例输入:
localhost1 144.12.34.245 page1
localhost2 144.12.34.241 page2
localhost3 144.12.34.242 page3
localhost4 144.12.34.243 page4
localhost4 144.12.34.243 page4
localhost4 144.12.34.243 page4
localhost5 144.12.34.244 page5
localhost5 144.12.34.244 page5
localhost5 144.12.34.244 page5
localhost5 144.12.34.244 page5
localhost5 144.12.34.244 page5
localhost5 144.12.34.244 page6
localhost1 144.12.34.244 page5
localhost5 144.12.34.244 page6
localhost5 144.12.34.244 page5
localhost5 144.12.34.144 page5
localhost5 144.12.34.0 page5
localhost5 144.12.34.1 page5
localhost5 144.12.34.2 page5
localhost5 144.12.34.3 page5
localhost5 144.12.34.4 page5
localhost5 144.12.34.5 page5
localhost5 144.12.34.6 page5
localhost5 144.12.34.7 page5
localhost5 144.12.34.8 page5
localhost5 144.12.34.9 page5
结果输出:
144.12.34.244
144.12.34.243
144.12.34.9
144.12.34.8
144.12.34.7
144.12.34.6
144.12.34.5
144.12.34.4
144.12.34.3
144.12.34.245