Intereting Posts
Как добавить значок корзины в избранное Gnome 3? cpulimit в скрипте bash, который запускает другие команды automount не работает в linux mint после обновления до rafaela Сканер отпечатков пальцев обнаружен и кажется функциональным, но никогда не соответствует отпечатку пальца Почему приоритет fsck был введен в / etc / fstab? Как я могу повторить последнюю команду без использования клавиш со стрелками? docker – как запустить x рабочий стол в контейнере? Выдать команду в каждом каталоге Как разбить OpenBSD, если он используется как статический HTTPD-сервер? Могу ли я перечислить свой контент usb без его установки? Включить беспроводную связь в Fresh Debian Build Как я могу сделать звуковой сигнал через динамики (spdif)? Есть ли удобная небольшая виртуальная машина Unix, которую я могу установить в качестве приложения для Android? Как я могу запускать автоматические процессы как аутентифицированные пользователи AD / LDAP? Проблемы с загрузкой пользовательского 64-битного ядра v3.19

Файлы с изменением хвоста

Я пытаюсь добавить файл, наблюдая за данными, которые постоянно добавляют каждую секунду, а данные о каналах – к новым файлам, которые будут обрабатывать их позже. с помощью

tail -f 'data file' >> 'destination file' 

Но некоторые, как некоторые строки дублируются, поэтому я делаю это.

 tail -f 'data file' | awk '!seen[$0]++' | >> 'destination file' 

Это кажется прекрасным, но линия будет разделена на некоторое время, поэтому, я думаю, мне нужно буферизировать всю линию, чтобы добиться этого. Но это хороший способ сделать это, или я должен делать это по-другому?

 tail -f 'data file' | grep --line-buffered -E '^.*$' | awk '!seen[$0++]' 

Полный пример данных

 [9/10/17 14:21:09] Data=[xxx|yyy|zzz] 

Пример разделения

 [9/1 [9/10/17 14:21:09] Data=[xx 

что-то вроде этого. Это происходит после того, как я передаю данные с tail на awk . Поэтому я перемещаю grep до конца команды, и это работа. Но данные будут храниться в буфере вместо этого, если он слишком мал.

 tail -f 'data file' | awk '!seen[$0++]' | grep --line-buffered -E '^.*$' 

Спасибо за совет и ответ!

Но некоторые, как какая-то строка дублируется

Если дубликаты являются смежными строками, вы можете попробовать uniq :

 $ tail -f <file> | uniq 

В быстрой проверке это работало так, как ожидалось, ожидая полной строки перед записью вывода.

Если дублирующиеся строки разбросаны по файлу, добавление uniq в канал между tail и awk может помочь.