You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Bash中用column命令查看CSV并滚动时保留表头?

在Bash环境下使用column命令查看CSV文件

基础用法

column是Bash环境里用来格式化文本为对齐表格的工具,针对CSV文件,核心参数如下:

  • -t:自动识别列数,生成对齐的表格格式
  • -s ,:指定字段分隔符为逗号(CSV文件的默认分隔符)

最基础的查看命令:

column -t -s , file.csv

如果CSV内容较多,需要分页且避免行自动换行,可以结合less -S(-S让过长的行横向滚动,而非折行显示):

column -t -s , file.csv | less -S

实现滚动时表头始终跟随显示

直接通过column | less无法实现表头固定,因为less本身不支持固定表头的功能。以下是两种可行的解决方案:

方案1:原生工具实现近似效果(每页顶部重复表头)

通过awk分离表头和内容,格式化后在每N行重复显示表头(可根据终端高度调整行数):

awk -F, '
    NR == 1 {
        header = $0;
        print header | "column -t -s ,";
        # 生成表头分隔线
        sep = gensub(/./, "-", "g", header);
        sep = gensub(/,/, "-", "g", sep);
        print sep | "column -t -s ,";
        next;
    }
    # 每50行输出一次表头(可自行修改数字适配终端高度)
    NR % 50 == 0 {
        print "";
        print header | "column -t -s ,";
        print sep | "column -t -s ,";
    }
    { print $0 | "column -t -s ," }
' file.csv | less -S

方案2:用终端复用工具实现真正的固定表头

如果你的环境安装了tmux,可以通过分屏让表头固定在顶部,内容在下方自由滚动:

# 启动tmux会话(未启动时执行)
tmux new-session -d -s csv_view
# 分屏,上屏显示格式化后的表头
tmux split-window -v -l 1
tmux send-keys "head -n1 file.csv | column -t -s ," C-m
# 下屏显示格式化后的内容并进入less滚动
tmux select-pane -t 0
tmux send-keys "tail -n+2 file.csv | column -t -s , | less -S" C-m
# 接入会话查看
tmux attach-session -t csv_view

内容的提问来源于stack exchange,提问作者gst1502

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 18:05:28