使用 column 工具格式化文本输出
关于 column
在Linux中查看数据文本时总会出现可读性低的问题(比如 /etc/passwd
),本文将介绍一个非常实用的工具叫做 column
,它可以帮助我们将文本数据以整齐的列格式输出。
column
命令来自包含大量工具的软件包 util-linux,其中的工具涵盖了系统管理、文件操作以及硬件监控多个方面。
基本用法
column
命令的基本语法如下:
1 | column [options] [file ...] |
如果没有指定文件,column
会从标准输入(管道符、重定向、直接键盘输入)读取数据。
options:
- -J: 此选项指定系统以 JSON 格式显示输出。
- -c: 根据每行允许的总字符数定义输出的宽度。
- -d: 用于定义不打印标题行。
- -N: 定义列名,每个名称用逗号(“,”)分隔。
- -H: 用于隐藏指定的列,使其不显示。
- -V: 显示版本信息并退出。
- -h: 显示帮助信息并退出。
- -s: 定义输出的列分隔符。
- -t: 用于通过确定列数来创建表格。
- -R: 用于将特定列中的文本右对齐。
- -T: 允许系统在必要时截断文本,以便调整列宽,确保列不会变得过宽。
- -O: 允许用户定义列的显示顺序。
- -L: 在每行后插入空行。
示例
/etc/passwd
文件是一个包含用户账户信息的系统文件,通常每行的格式如下:
1 | username:x:UID:GID:comment:home_directory:shell |
这里的 x
表示加密后的密码已经被存储在 /etc/shadow
中。
我们可以使用 column
命令来格式化 /etc/passwd
文件的内容,使其更易读。
示例1 格式化输出 设定分隔符为
:
1
2
3
4
5
6
7$ column -t -s: /etc/passwd
root 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
sys x 3 3 sys /dev /usr/sbin/nologin
sync x 4 65534 sync /bin /bin/sync
games x 5 60 games /usr/games /usr/sbin/nologin示例2 隐藏特定的列
1
2
3
4
5
6
7$ column -t -s: -H 2,4,5,7 /etc/passwd
root 0 /root
daemon 1 /usr/sbin
bin 2 /bin
sys 3 /dev
sync 4 /bin
games 5 /usr/games示例3 自定义列名
1
2
3
4
5
6
7
8$ column -t -s: -N "Username,Password,UID,GID,Comment,Home,Shell" /etc/passwd
Username Password UID GID Comment Home Shell
root 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
sys x 3 3 sys /dev /usr/sbin/nologin
sync x 4 65534 sync /bin /bin/sync
games x 5 60 games /usr/games /usr/sbin/nologin示例4 指定特定列的顺序
1
2
3
4
5
6
7
8
9# 效果同 -O "7,1"
$ column -t -s: -O "7,1,2,3,4,5" -N "Username,Password,UID,GID,Comment,Home,Shell" /etc/passwd
Shell Username Password UID GID Comment Home
/bin/bash root x 0 0 root /root
/usr/sbin/nologin daemon x 1 1 daemon /usr/sbin
/usr/sbin/nologin bin x 2 2 bin /bin
/usr/sbin/nologin sys x 3 3 sys /dev
/bin/sync sync x 4 65534 sync /bin
/usr/sbin/nologin games x 5 60 games /usr/games