Попробуйте:
Это ваш файл:
mayankp@mayank:~/$ cat ff.txt
line one word=bnd0 src=123.456.5.444 dst=123.456.5.35
line two word=bnd1 src=123.456.5.78 dst=123.456.5.35
line three word=bnd1 src=123.456.5.78 dst=123.456.5.35
line four word=bnd0 src=123.456.5.444 dst=123.456.5.35
line five word=bnd0 src=123.456.5.234 dst=123.456.5.35
line six word=bnd0 src=123.456.5.234 dst=123.456.5.35
line seven word=bnd0 src=123.456.5.234 dst=123.456.5.35
line eight word=bnd0 src=123.456.5.775 dst=123.456.5.35
line nine word=bnd0 src=123.456.5.775 dst=123.456.5.35
line ten word=bnd1 src=123.456.5.78 dst=123.456.5.3
Вывод:
mayankp@mayank:~/$ grep 'word=bnd0' ff.txt | awk -F'src=' '{print $2}' | awk -F'dst=' '{print $1}' |uniq -c
2 123.456.5.444
3 123.456.5.234
2 123.456.5.775
Вы можете поэкспериментировать с указанным выше выводом, чтобы распечатать его на своемтребуемый формат.
Пояснение :
grep 'word=bnd0' ff.txt
: при этом будут выполняться поиск строк, имеющих word=bnd0
, остальные строки будут исключены.
awk -F'src=' '{print $2}'
: эта команда awk разделит вышеуказанные строки на основе src=
в качестве разделителя и выберет содержимое, которое появляется после src=
.
awk -F'dst=' '{print $1}'
: эта команда awk разделит на разделительdst=
и выберет содержимое раньше dst=
.
Итак, теперь у нас остался только фактический ip_addr для выбранных строк.
uniq -c
: будет найден только уникальныйстрок из вышеприведенного вывода и вывести количество дубликатов.