Использование sed
sed -i 's+^mynetworks.*+& 0.0.0.0/0+' log.txt
Использование awk
awk '/^mynetworks/ {$0=$0" 0.0.0.0/0"} 1' log.txt
или
awk '{if ($1 ~ /^mynetworks/) print $0, "0.0.0.0/0"; else print $0}' log.txt
Использование bash
while read -r line ; do
[[ $line == mynetworks* ]] && line+=" 0.0.0.0/0"
echo "$line"
done < log.txt
Когда tcpdump "отбрасывает" пакеты, это связано с тем, что у него недостаточно места в буфере, чтобы не отставать от пакетов, поступающих из сети.
Разница между захваченными и полученными пакетами может быть связана с реализацией ОС или tcpdump, или, что более часто, с прерыванием процесса с помощью ^ C.
Установка размера буфера для каждого пакета с помощью «s0» приводит к установке 64 КБ на man tcpdump
; обычно я устанавливаю не более 1500, если использую -X для просмотра всего пакета, и если только использую tcpdump для просмотра заголовков, даже меньше, чем необходимо - 160 байт, что составляет размер заголовков IPv4.
Обычно работа с экраном также медленнее, если нужна скорость, я бы направил вывод в файл, если вам не нужно смотреть его в реальном времени.
От man "tcpdump":
"Обратите внимание, что создание снимков большего размера увеличивает время , необходимое для обработки пакетов, и, по сути, уменьшает объем буферизации пакетов. Это может привести к потере пакетов.Вам следует ограничить snaplen наименьшим числом, которое будет захватывать интересующую вас информацию протокола . "