Мониторинг / отслеживание изменений / обновлений CSV-файла в табличном представлении / формате

Я хочу отслеживать / отслеживать изменения в файле CSV (некоторый вывод журнала робота). Это огромный файл с в качестве разделителя и первой строкой с информацией заголовка.

Пока что я использую вывод tail - f , но он не форматируется по столбцам и выглядит так:

yAccelRaw       zAccelRaw       xGyroRaw    ... ... ...
3       256     1   ... ... ...
4       255     3   ... ... ... 
4       255     -6  ... ... ...
3       253     -1  ... ... ...
4       254     2   ... ... ...
5       255     0   ... ... ...
4       255     3   ... ... ...
5       254     3   ... ... ...
5       253     -1  ... ... ...
4       255     3   ... ... ...

С CSV с 30 или более столбцами , понять, какое значение принадлежит какому столбцу, непросто. Я бродил, есть ли общее решение для печати вывода, отформатированного в виде таблицы?

Пока что я использую tail -f | cut -f5,6 , чтобы вырезать определенные столбцы и наблюдать за их выводом, но я бы предпочел полный обзор. Кроме того, я попытался передать результат в столбец , который не обновляется.

0
30.06.2017, 01:05
2 ответа

Column делает именно то, о чем вы просите. Вы можете определить вкладку как разделитель с аргументом. Почему здесь нельзя подключить трубопровод к колонке?cat <file.csv> | column -s "\t"

0
28.01.2020, 02:45

Вы можете использовать, например, awk для захвата заголовков в первой строке и повторять их каждые 10 строк, а также уменьшить размер столбца, скажем, до 5 символов с чем-то вроде этого:

tail -n +1 -f file.csv |
awk  'NR==1 { n=split($0,hdr) }
NR%10==1    { for(i=1;i<=n;i++)printf "%5.5s ",hdr[i];printf "\n" }
            { for(i=1;i<=n;i++)printf "%5.5s ",$i;printf "\n" }
'

Это даст что-то вроде

yAcce zAcce xGyro...
    3   256     1...
    4   255     3... 
    4   255    -6...
    3   253    -1...
    4   254     2...
    5   255     0...
    4   255     3...
    5   254     3...
    5   253    -1...
    4   255     3...
yAcce zAcce xGyro...
    3   256     1...
...

Если ширина все еще слишком широка для вашего терминала, вы можете передать результат в less -S +F, что сделает его похожим на tail -f, но позволит вам прокручивать влево и вправо с помощью стрелок, если вы приостановите хвост с помощью Control -C. Чтобы продолжить, введите F.

1
28.01.2020, 02:45

Теги

Похожие вопросы