Я хочу отслеживать / отслеживать изменения в файле 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
, чтобы вырезать определенные столбцы и наблюдать за их выводом, но я бы предпочел полный обзор. Кроме того, я попытался передать результат в столбец
, который не обновляется.
Column делает именно то, о чем вы просите. Вы можете определить вкладку как разделитель с аргументом. Почему здесь нельзя подключить трубопровод к колонке?cat <file.csv> | column -s "\t"
Вы можете использовать, например, 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
.