Я б використав python. У кожному linux ststem на сьогодні встановлено python2.
Додайте кожну ip адресу в дикт (асоціативний масив) як ключ = пари значень, тобто {"12.34.56.78": 1, "87.76.43.21": 3}.
Ви 'перевіряєте' ip-адресу як ключ і збільшуєте значення на 1. Якщо ви використовуєте defaultdict ("ip"), якщо ключ не існує, він створюється зі значенням за замовчуванням 0. Якщо ключ існує вже, дефолт не робить нічого. Значення збільшується в наступному рядку.
#!/usr/bin/python2
infile = open("file.txt","r")
iplist = {} # create an empty dict
for line in infile:
line = line.strip() # remove newline.
if line: # if not a blank line.
iplist.setdefault(line, 0) # check for ip and add with default value of 0
iplist[line] += 1 # increment
outfile = open("out.txt","w") #open output file
for key in iplist.keys():
line = "%-15s = %s" % (key, iplist[key])
print line # print uf desired.
outfile.write(line + "\n")
вихідний файл:
cat out.txt
27.33.65.2 = 2
58.161.137.7 = 1
121.50.198.5 = 1
184.173.187.1 = 3
Я знаю, що ви шукали рішення командного рядка, але, як ви бачите, це елегантно відформатований дисплей, який займав лише десяток рядків або близько того. Python - відмінний інструмент для адміністрування.