csvview
Быстрый интерактивный CSV-просмотрщик для терминала
csvview — TUI-приложение для работы с CSV-файлами больших размеров, написанное на C с использованием ncurses. Без Python, без Electron, без зависимостей — один бинарник, мгновенный запуск, минимальное потребление памяти. Работает по SSH на любом сервере.
Поддерживает файлы до 50 миллионов строк благодаря memory-mapped I/O и многопоточной обработке (до 8 потоков). Открывает CSV, TSV, PSV, NDJSON с автоопределением разделителя.
Установка
macOS через Homebrew:
$ brew tap daniil-khanin/csvview
$ brew install csvview
Или из исходников:
$ git clone https://github.com/daniil-khanin/csvview.git
$ cd csvview && make
$ sudo make install # /usr/local/bin + man page
Быстрый старт
$ csvview data.csv # открыть CSV
$ csvview data.tsv # TSV автодетект
$ csvview --sep=\; data.csv # произвольный разделитель
$ csvview # история файлов
При запуске без аргументов открывается история недавних файлов с информацией о размере, числе строк и столбцов.
Навигация
Перемещение по таблице — стрелками или в vim-стиле (h j k l). gg — начало файла, G — конец. Ctrl+G или :N — перейти к строке по номеру. PageUp/PageDown для постраничной
прокрутки. z — заморозить столбцы слева.
Навигация работает плавно даже на файлах в миллионы строк — данные читаются через mmap напрямую с диска, без загрузки всего файла в память.
Поиск
Нажмите / и введите текст для поиска. Все совпадения подсвечиваются в таблице, строки с совпадениями помечаются * в гаттере. n / N — переход к следующему/предыдущему результату.
Фильтрация и сортировка
f — быстрый фильтр по текущему столбцу. Shift+F — продвинутый фильтр с выражениями:
revenue > 1000 AND status = paid
date >= 2025-Q1 AND date <= 2025-Q4
category != test OR priority = high
Поддерживаются операторы =, !=, >, >=, <, <=, логика AND, OR, !. Даты можно фильтровать по месяцу (= 2025-01)
или кварталу (= 2025-Q3).
Сортировка: [ — по возрастанию, ] — по убыванию. { / } — добавить уровень сортировки для многоуровневой сортировки.
Статистика столбцов
Нажмите d на любом столбце. Для числовых столбцов: sum, mean, median, mode, min/max, топ-10 значений и гистограмма распределения. Для дат: распределение по месяцам, кварталам, годам.
Дополнительно: p — перцентили (P1–P99, IQR, stddev), e — тренды (sparkline по 20 временным бакетам), f — полный список частот с навигацией и drill-down.
Корреляционная матрица (:corr) показывает Pearson r для всех числовых столбцов с цветовой кодировкой. Enter на ячейке — scatter plot двух столбцов.
Отчёт по выбросам (:outliers) находит строки с |z-score| выше порога. Enter — переход к строке, f — фильтр.
Графики
Нажмите g на числовом столбце для построения графика прямо в терминале. Типы: line, bar, dot. Графики рендерятся braille-символами Unicode — каждый символ терминала несёт 2×4 пикселя.
Scatter plot (:gsc) для визуализации зависимости двух столбцов с расчётом Pearson r. Dual Y axis (:g2y) для наложения двух метрик с разными масштабами. Donut chart (Ctrl+G на текстовом столбце) для
частотного распределения. Box plot (:gbox) для сравнения распределений.
Все графики можно экспортировать в SVG командой :gsvg — готовый файл для печати или документации.
Сводные таблицы
Нажмите p для построения сводной таблицы. В окне настроек выберите:
- Rows / Columns — столбцы для группировки по строкам и столбцам
- Values — столбец для агрегации
- Aggregation — SUM, AVG, COUNT, MIN, MAX, UNIQUE COUNT и их комбинации
- Date grouping — Month, Quarter, Year, Century (для столбцов с датами)
- Filter by — третье измерение (Report Filter)
Результат — интерактивная сводная таблица с навигацией, итогами и подсветкой текущей ячейки:
Show Values As (v) — переключение отображения: абсолютные значения → % от строки → % от столбца → % от общего итога → ранг → running total.
Report Filter (F) — popup с выбором значений третьего измерения. * отмечает выбранные значения, Space переключает. < / > — быстрое циклирование по одному значению.
Sparklines (S) — braille-график тренда рядом с каждой строкой. Transpose (T) — мгновенная смена строк и столбцов.
Graph (G) — split-screen: таблица слева, график справа. Space — закрепить серию, a — переключить ось, s — линейная/логарифмическая шкала.
Drill-down: нажмите Enter на ячейке сводной таблицы — откроется основная таблица, отфильтрованная по значениям строки и столбца этой ячейки.
Экспорт: :e — CSV, :em — Markdown, :eg — SVG графика. Фильтрация строк пивота: :ptop 10, :pbot 5, :pfilter >1000.
Редактирование
Enter — редактирование ячейки. u — undo (до 20 шагов). s — сохранить изменения в файл.
Управление столбцами: :cr name — переименовать, :cd name — удалить, :cal / :car name — добавить слева/справа, :dr N — удалить строку.
Вычисляемые столбцы (:cf) — добавление столбца с формулой:
:cf profit = revenue - cost
:cf margin = round(profit / revenue * 100, 1)
:cf status = if(margin > 20, "good", "low")
:cf rank = rank(revenue)
Доступны функции: round, abs, floor, ceil, mod, pow, if, empty. Агрегаты: col_sum, col_avg,
col_min, col_max, col_count, col_median, col_percentile, col_stddev, col_var, rank, pct.
Темы
10 цветовых тем: dark, light, tokyonight, nord, catppuccin, solarized_light, paper, turbovision, dracula, gruvbox. Выбор через :theme с live-preview или из командной строки --theme=name.
CLI-инструменты
csvview работает не только как интерактивный просмотрщик, но и как набор CLI-утилит:
$ csvview --cat a.csv b.csv # объединить CSV файлы
$ csvview --split --by=region f.csv # разбить по значению столбца
$ csvview --profile data.csv # отчёт по качеству данных
$ csvview --dedup data.csv # удалить дубликаты
Проект с открытым исходным кодом, лицензия MIT. Репозиторий: github.com/daniil-khanin/csvview