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

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

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 '^.*$' 

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

One Solution collect form web for “Файлы с изменением хвоста”

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

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

 $ tail -f <file> | uniq 

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

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

  • Извлечение уникальной части текста из файла с помощью awk, sed или grep
  • Как выполнить инструкцию IF из результата выполненной команды
  • Элегантный способ подсчета, сколько раз шаблоны из файла встречаются в другом файле
  • Извлечь третью группу текста из разделителей диапазонов
  • Сохранять вывод из одной команды и обрабатывать ее для другого
  • Как взять список и удалить его из файла?
  • Найти последнее появление строки в нескольких файлах
  • Зацикливание файлов с пробелами в именах?
  • Sed, которая игнорирует любой комментарий
  • Возврат только части строки после соответствующего шаблона
  • grep -f patternfile не находит ничего или слишком сильно в зависимости от содержимого шаблона
  • Linux и Unix - лучшая ОС в мире.