我有一个格式如下的文件:
$ cat file.txt
27.33.65.2
27.33.65.2
58.161.137.7
121.50.198.5
184.173.187.1
184.173.187.1
184.173.187.1
Run Code Online (Sandbox Code Playgroud)
将文件解析file.txt为以下格式的最佳方法是什么:
27.33.65.2: 2
58.161.137.7: 1
121.50.198.5: 1
184.173.187.1: 3
Run Code Online (Sandbox Code Playgroud)
换句话说,我想遍历文件并计算每个 IP 地址出现的次数。我已经运行了它,sort所以所有的 IP 地址都是按顺序排列的,并且直接在彼此之后。
gle*_*man 26
您正在寻找 uniq -c
如果它的输出不符合您的喜好,则可以很容易地对其进行解析和重新格式化。
例如:
$ uniq -c logfile.txt | awk '{print $2": "$1}'
27.33.65.2: 2
58.161.137.7: 1
121.50.198.5: 1
184.173.187.1: 3
Run Code Online (Sandbox Code Playgroud)
uniq确实,似乎是更聪明的解决方案。awk 方式:
awk '{ip_count[$0]++}; '\
'END {for (ip in ip_count) printf "%15s: %d\n",ip,ip_count[ip];}' file
Run Code Online (Sandbox Code Playgroud)