Я обрабатываю некоторый вывод полей tshark. Некоторая обработка уже произошла, и теперь есть соседние строки, где последнее поле дублируется. В этих дубликатах отсутствует строка с соответствующим порядковым номером. Задача состоит в том, чтобы сохранить только пары соседних строк, в которых соответствует столбец последовательности. Последнее поле имеет значения 0 и 130, и каждая пара строк начинается с 130. Последовательность представляет собой число 0-15. Поток данных содержит много строк. Поля:awk сохранить смежную строку на основе повторяющегося поля
date time src-int dst-int seq function
24/01/2017 16:57:27.307400000 10 1000 11 130
24/01/2017 16:57:27.418675000 1000 10 11 0
24/01/2017 16:58:53.603604000 1000 10 12 0
24/01/2017 16:58:54.121603000 10 1000 13 130
24/01/2017 16:58:54.677752000 10 1000 14 130
24/01/2017 16:58:54.681079000 1000 10 14 0
24/01/2017 17:09:12.974979000 10 1000 1 130
24/01/2017 17:09:12.981149000 1000 10 1 0
24/01/2017 17:09:13.477211000 1000 10 2 0
24/01/2017 17:09:14.026279000 1000 10 3 0
Нужный выход держать пары строк с функцией порядка 130, то 0 и соответствующее число последовательности:
24/01/2017 16:57:27.307400000 10 1000 11 130
24/01/2017 16:57:27.418675000 1000 10 11 0
24/01/2017 16:58:54.677752000 10 1000 14 130
24/01/2017 16:58:54.681079000 1000 10 14 0
24/01/2017 17:09:12.974979000 10 1000 1 130
24/01/2017 17:09:12.981149000 1000 10 1 0
У меня есть решение, что половина работ. Он соответствует \t130$
и получает следующую строку, печать, если последовательность соответствует. Он возвращает хорошие данные, однако он не обрабатывает повторяющиеся значения 130. В данных примера он пропускает последовательность 14. Количество смежных повторяющихся строк является произвольным, поэтому кажется глупо гнездо другого теста.
awk "/\t130$/ {seq=$5; prev=$0; getline;} $5==seq {print prev; print;}"
Как лучше всего обрабатывать все дубликаты в начальном состоянии?
BTW, используя GNU awk в Windows 7. FWIW две строки в конечном итоге будут объединены с использованием print prev,$0
, не показаны для ясности.
Спасибо. Что касается потока, я считаю, что второе '{действие}' всегда выполняется, так как оно не имеет никакого условия? В этом случае, почему ясно? Кроме того, любая причина добавления конца строки, а не использования двух операторов печати? – gloopy
1. Небрежность. 2. Неспециально. –
Этот ответ подтверждает, что совпадение должно быть в соседней строке. Маркировка правильная, так как она наиболее точно соответствует этой проблеме. – gloopy