在 bash shell 中,我尝试按每行末尾的数字值排序(按数据包数量排序)尝试使用“sort -k6 -t '=' -n
但没有效果。
输入:
type udp ip src=192.168.2.173 dport=53 packets=1
type udp ip src=192.168.2.168 dport=53 packets=1
type udp ip src=192.168.2.173 dport=53 packets=1
type udp ip src=192.168.2.170 dport=53 packets=560
type udp ip src=192.168.2.173 dport=53 packets=1
type udp ip src=192.168.2.175 dport=53 packets=1
type udp ip src=192.168.2.173 dport=53 packets=11
type udp ip src=192.168.2.178 dport=53 packets=1
type udp ip src=192.168.2.162 dport=53 packets=23
type udp ip src=192.168.2.173 dport=53 packets=75
type udp ip src=192.168.2.173 dport=53 packets=7
type udp ip src=192.168.2.173 dport=53 packets=100
type udp ip src=192.168.2.173 dport=53 packets=1
type udp ip src=192.168.2.173 dport=53 packets=200
type udp ip src=192.168.2.162 dport=7777 packets=75
答案1
您选择=
作为字段分隔符。每行恰好有三个分隔符,因此“每行末尾的数值”是字段编号 4。
这些是字段:
type udp ip src=192.168.2.162 dport=7777 packets=75
111111111111111 2222222222222222222 333333333333 44
所以:
sort -k4 -t '=' -n
或者,您可以选择空格作为分隔符,那么该字段确实是 6,但您需要告诉sort
从该字段的第 9 个字符开始。
type udp ip src=192.168.2.162 dport=7777 packets=75
1111 222 33 44444444444444444 5555555555 6666666666
123456789…
因此这也将起作用:
sort -k6.9 -t ' ' -n