告别凌乱:用 tennis 在终端优雅渲染 CSV 数据

告别凌乱:用 tennis 在终端优雅渲染 CSV 数据
告别凌乱:用 tennis 在终端优雅渲染 CSV 数据

告别凌乱:用 tennis 在终端优雅渲染 CSV 数据

在日常的后端开发、数据清洗或是简单的运维排障中,我们经常需要在服务器终端直接查看 CSV(逗号分隔值)文件。如果你曾使用过 cat 或者 less 来浏览包含十几列数据的 CSV,你一定会对那种满屏错位、难以对齐的乱码记忆犹新。

虽然有 column -t 这样的老牌命令,但其功能单一,不仅无法根据终端宽度自动截断,也没有语法高亮,更缺乏数字格式化等现代特性。

今天为你推荐一款极具设计感的终端 CSV 查看神器 —— tennis

为什么选择 tennis?

tennis 是一个专门为了在终端中打印美观 CSV 表格而生的轻量级命令行工具。它不仅仅是一个简单的格式化工具,它甚至能感知你终端的"情绪"。

1. 自动截断与智能排版

当 CSV 列数过多时,tennis 会根据当前终端窗口 the 实际宽度(屏幕大小)进行智能计算,自动截断超长的文本,确保表格永远不会发生令人崩溃的折行。如果终端支持,它还会使用类似 doomicode 的最佳匹配策略来正确计算 Unicode(如 Emoji)的展示宽度。

2. 环境感知的主题自适应

不需要手动配置复杂的 ANSI 颜色,tennis 巧妙地引入了 termbg 模块,它会探测你的终端背景色是深色还是浅色,并自动选择对比度最舒服的色彩主题。这不仅是对视力的保护,更是终端美学的体现。

3. 基于 Zig 构建,极致性能

工具完全使用近年来备受瞩目的系统级语言 Zig 编写。这使得它不仅体积小巧(无需任何庞大的运行时环境),而且启动和解析速度极快,面对几千行的日志数据也能瞬间渲染出高保真的表格视图。

核心特性漫游

通过一行命令 --peektennis 会为你提供数据的形状、样本填充率以及快捷的统计信息,这就像是数据集的微缩诊断卡。

此外,它还内置了强大的数据操作能力: - 格式推理:自动推断并兼容 JSON(包含 JSONL)以及 SQLite 数据库文件(需借助 sqlite3 CLI)。 - 边框艺术:支持 roundedthindouble 等多种边框风格。 - 数据修剪:支持 --filter 过滤、--sort 排序、--head/tail 切片以及通过 --select/deselect 精确控制要展示的列。 - 数字美化:自动对浮点数或整型列进行格式化对齐,一目了然。

告别凌乱:用 tennis 在终端优雅渲染 CSV 数据

CNB 远程容器实战演示

为了验证其在云端 Linux 环境的表现,我们连接进入了 CNB (Cloud Native Build) 的云原生远程终端,进行了第一手的下载和测验。

首先,我们在工作空间中下载适用于 Linux 的 AMD64 二进制发行版并解压:

wget -q https://github.com/gurgeous/tennis/releases/download/v0.5.0/tennis_0.5.0_linux_amd64.tar.gz
tar -xzf tennis_0.5.0_linux_amd64.tar.gz
chmod +x tennis_0.5.0_linux_amd64/tennis

接着,我们快速生成了一份包含英文和浮点数的示例数据集 test.csv

cat << 'EOF' > test.csv
name,age,city,score
Alice,28,New York,95.5
Bob,34,San Francisco,88.0
Charlie,22,Chicago,91.2
EOF

最后,运行 tennis 并开启圆角边框及斑马纹展示模式(--border rounded --zebra):

./tennis_0.5.0_linux_amd64/tennis test.csv --border rounded --zebra

控制台渲染结果如下:

╭─────────┬──────┬───────────────┬─────────╮
│ name │ age │ city │ score │
├─────────┼──────┼───────────────┼─────────┤
│ Alice │ 28 │ New York │ 95.500 │
│ Bob │ 34 │ San Francisco │ 88.000 │
│ Charlie │ 22 │ Chicago │ 91.200 │
╰─────────┴──────┴───────────────┴─────────╯

如上所示,对于 score 列,tennis 自动识别为浮点数并补齐了小数点后的精度(95.500),完美对齐了整列数据。配合其内置的色彩渲染机制,原本枯燥的文本瞬间拥有了 GUI 工具般的高级感。

如果你经常与结构化文本打交道,请务必尝试一下这个优雅的小工具!

项目地址: https://github.com/gurgeous/tennis


公众号二维码

长按二维码关注 “边学边练”

文章版权声明:除非注明,否则均为边学边练网络文章,版权归原作者所有

相关阅读

最新文章

热门文章

本栏目文章