Linux column 命令详解:文本格式化  表格对齐神器,终端输出秒变整洁 1. 命令简介column 命令是一个用于文本格式化的实用工具它能将输入文本无论是来自文件还是标准输入重新组织成多列格式从而提升可读性。它主要有两大核心功能列式布局将单列数据如列表智能地填充到指定宽度的多列表格中类似于 ls 命令的输出。 表格对齐识别并整理具有多列结构但未对齐的文本如以空格或特定字符分隔的数据使各列垂直对齐形成整齐的表格。2. 语法格式bash运行column [选项] [文件...]参数说明文件...可选指定要处理的一个或多个文件。如果未指定文件或者文件名为 -column 将从标准输入读取数据。这使得它可以轻松地与管道配合使用。3. 常用选项及说明表格选项长选项说明-c--columns 宽度指定输出显示的总宽度以字符数为单位。输入的单列数据将在此宽度内被格式化为多列。-t--table表格模式。自动检测输入行中的列默认以空格分隔并创建一个对齐的表格。这是整理多列数据最常用的选项。-s--separator 字符串在表格模式 (-t) 下指定用于识别输入列的分隔符。可以指定多个字符每个字符都被视为分隔符。-o--output-separator 字符串在表格模式 (-t) 下指定输出时列之间的分隔符。默认为两个空格 ( )。-x--fillrows改变列式布局 (-c) 的填充顺序。默认是先填充列纵向此选项使其先填充行横向。-N--table-columns 名称列表为表格的每一列指定一个名称名称用逗号分隔。通常与 -t 和 -O 选项结合使用用于重排或选择输出列。-O--table-order 列顺序指定输出列的显示顺序。列号从 1 开始用逗号分隔。需与 -N 或 -t 一起使用。-h--help显示帮助信息并退出。-V--version显示版本信息并退出。4. 示例用法示例 1基础列式布局整理列表将单列列表转换为适合终端宽度的多列显示。bash运行# 生成一个简单的字母列表 printf %s\n {a..z} | column -c 50plaintexta e i m q u y b f j n r v z c g k o s w d h l p t xbash运行# 使用 -x 选项改为先填充行横向 printf %s\n {1..12} | column -c 30 -xplaintext1 2 3 4 5 6 7 8 9 10 11 12示例 2创建对齐的表格整理多列数据整理以空格分隔的、未对齐的文本数据。bash运行# 假设有一个未对齐的文本文件 data.txt cat data.txt Name Age Occupation Alice 30 Engineer Bob 25 Designer Charlie 35 Managerbash运行# 使用 -t 选项自动对齐列 column -t data.txtplaintextName Age Occupation Alice 30 Engineer Bob 25 Designer Charlie 35 Manager示例 3自定义输入和输出分隔符处理使用特定字符如冒号、逗号分隔的数据。bash运行# 处理 /etc/passwd 文件冒号分隔 head -3 /etc/passwd | column -t -s :plaintextroot x 0 0 root /root /bin/bash daemon x 1 1 daemon /usr/sbin /usr/sbin/nologin bin x 2 2 bin /bin /usr/sbin/nologinbash运行# 指定输出列分隔符为 ‘ | ’ head -3 /etc/passwd | column -t -s : -o | plaintextroot | x | 0 | 0 | root | /root | /bin/bash daemon | x | 1 | 1 | daemon | /usr/sbin | /usr/sbin/nologin bin | x | 2 | 2 | bin | /bin | /usr/sbin/nologin示例 4组合使用管道column 常与其他命令通过管道结合用于格式化输出。bash运行# 格式化 mount 命令的输出 mount | column -tbash运行# 格式化 docker ps 输出 docker ps --format table {{.Names}}\t{{.Status}}\t{{.Ports}} | column -t -s $\t5. 注意事项默认行为如果不使用 -t 或 -c 选项column 会尝试在 80 个字符的宽度内进行列式布局类似于只使用 -c 80。分隔符处理在表格模式 (-t) 下连续的输入分隔符如多个空格默认被视为一个分隔符。-s 选项指定的所有字符都具有同等效力。填充顺序-x先填充行和默认的先填充列行为差异在处理非方形数据时结果会不同。根据数据逻辑顺序如字母、数字序列选择合适的模式。与 fold 的区别column 是按 “列” 或 “字段” 来组织内容保持每个数据单元的独立而 fold 命令是简单地在指定宽度处对长行进行换行字符层面。Linux 学习资料https://pan.baidu.com/s/1A6qqBk2ViE_Le2cQjSowkQ?pwd7uz8