上一篇
linux终端如何分栏
- Linux
- 2025-07-22
- 5
Linux 终端,可使用
sed
、
awk
等命令结合格式化字符串实现分栏输出,或借助
column -c
命令按
Linux终端中,分栏显示是一种非常实用的技巧,可以帮助用户更高效地浏览和处理信息,以下是几种常见的Linux终端分栏方法:
使用paste
命令
- 功能:将多列数据合并为一行输出,常用于对比多个文件或数据的并排显示。
- 示例:假设有两个文件
file1.txt
和file2.txt
如下:
# file1.txt apple banana cherry # file2.txt red yellow dark red
执行以下命令可以将两个文件的内容并排显示:
paste file1.txt file2.txt
输出结果:
apple red banana yellow cherry dark red
使用column
命令
- 功能:将输入的数据按列格式化输出,适用于将单列数据转换为多列显示。
- 示例:假设有一个文件
words.txt
如下:
# words.txt apple banana cherry date elderberry fig grape
执行以下命令可以将数据按两列显示:
cat words.txt | column -t -s $'t' -c 2
输出结果:
apple banana cherry date elderberry fig grape
使用tmux
或screen
进行窗口分栏
- 功能:
tmux
和screen
是终端复用工具,可以在一个终端会话中创建多个窗口或面板,实现分栏效果。 - 示例:使用
tmux
创建一个新会话并分栏:tmux new-session -s mysession
进入
tmux
后,按Ctrl+B
然后按可以将当前窗口垂直分割为左右两栏,按Ctrl+B
然后按可以将当前窗口水平分割为上下两栏。
使用watch
命令结合其他命令
- 功能:
watch
命令可以定时执行指定的命令,并将输出结果以分栏的形式更新显示,适用于实时监控数据变化。 - 示例:监控当前目录的磁盘使用情况,并每2秒刷新一次:
watch -n 2 "df -h | grep '/dev/sda1'"
使用awk
脚本进行复杂分栏
- 功能:
awk
是一个强大的文本处理工具,可以通过编写脚本实现复杂的分栏需求。 - 示例:假设有一个日志文件
access.log
如下:
# access.log 192.168.1.1 [01/Jan/2023:10:00:00 +0000] "GET /index.html HTTP/1.1" 200 1024 192.168.1.2 [01/Jan/2023:10:01:00 +0000] "POST /login HTTP/1.1" 302 512 192.168.1.3 [01/Jan/2023:10:02:00 +0000] "GET /dashboard HTTP/1.1" 200 2048
执行以下awk
脚本可以将日志按三列显示:
awk '{print $1, $4, $7}' access.log
输出结果:
168.1.1 /index.html 1024 192.168.1.2 /login 512 192.168.1.3 /dashboard 2048
使用pr
命令进行分页分栏
- 功能:
pr
命令可以将输入的内容进行分页处理,并支持指定每页的列数。 - 示例:假设有一个文件
long_text.txt
较长,执行以下命令可以将其按两列分页显示:pr -2 -t -w 80 long_text.txt
使用nl
命令结合paste
进行编号分栏
- 功能:
nl
命令可以为文件内容添加行号,结合paste
命令可以实现带编号的分栏显示。 - 示例:假设有一个文件
data.txt
如下:
# data.txt apple banana cherry
执行以下命令可以为每行添加行号并分两列显示:
nl -b a data.txt | paste | column -t
输出结果:
1 apple 2 banana 3 cherry
使用diff
命令进行分栏对比
- 功能:
diff
命令可以比较两个文件的差异,并以分栏的形式显示。 - 示例:假设有两个文件
file1.txt
和file2.txt
略有不同,执行以下命令可以对比它们的差异:diff file1.txt file2.txt
输出结果(假设file2.txt
中第二行改为orange
):
1a2 > orange 3a4 > grapefruit
使用join
命令进行基于键的分栏合并
- 功能:
join
命令可以根据指定的键将两个文件的内容合并为一列显示。 - 示例:假设有两个文件
fileA.txt
和fileB.txt
如下:
# fileA.txt 1 apple 2 banana 3 cherry # fileB.txt 1 red 2 yellow 3 dark red
执行以下命令可以根据第一列的键值将两个文件的内容合并:
join fileA.txt fileB.txt
输出结果:
1 apple red 2 banana yellow 3 cherry dark red
使用fold
命令结合paste
进行固定宽度分栏
- 功能:
fold
命令可以将长文本按指定宽度折行,结合paste
命令可以实现固定宽度的分栏显示。 - 示例:假设有一个长文本文件
long_text.txt
,执行以下命令可以将其按每行40字符宽度折行,并分两列显示:fold -w 40 long_text.txt | paste | column -t
使用expand
命令调整字符间距进行分栏
- 功能:
expand
命令可以调整文本的字符间距,结合paste
命令可以实现等宽分栏。 - 示例:假设有一个文件
fixed_width.txt
如下:
# fixed_width.txt apple banana cherry
执行以下命令可以将每行的字符间距调整为4个空格,并分两列显示:
expand -t 4 fixed_width.txt | paste | column -t
输出结果:
apple banana cherry
使用fmt
命令进行格式化分栏
- 功能:
fmt
命令可以格式化文本的宽度和段落,结合paste
命令可以实现格式化后的分栏显示。 - 示例:假设有一个文件
paragraph.txt
如下:
# paragraph.txt This is a long paragraph that needs to be formatted properly for better readability in a two-column layout. The text should wrap around nicely and fit into the specified width without breaking words unnecessarily.
执行以下命令可以将文本格式化为每行50字符宽度,并分两列显示:
fmt -w 50 paragraph.txt | paste | column -t
使用nl
命令结合awk
进行复杂分栏处理
- 功能:结合
nl
和awk
可以实现更复杂的分栏需求,如添加序号、过滤特定行等。 - 示例:假设有一个文件
data_with_ids.txt
如下:
# data_with_ids.txt apple 100 banana 150 cherry 200
执行以下命令可以为每行添加序号,并只显示第二列数据:
nl -b a data_with_ids.txt | awk '{print $1, $3}' | paste | column -t
输出结果:
1 100 2 150 3 200
使用sort
命令结合paste
进行排序分栏
- 功能:结合
sort
和paste
可以先对数据进行排序,然后再分栏显示。 - 示例:假设有一个文件
unsorted_data.txt
如下:
# unsorted_data.txt cherry 200 apple 100 banana 150
执行以下命令可以先按数值排序,然后分两列显示:
sort -k2,2n unsorted_data.txt | paste | column -t
输出结果:
apple 100 banana 150 cherry 200
使用cut
命令结合paste
进行字段提取分栏
- 功能:结合
cut
和paste
可以从文件中提取指定字段,并进行分栏显示。 - 示例:假设有一个文件
data_fields.txt
如下:
# data_fields.txt apple red 100 banana yellow 150 cherry dark red 200
执行以下命令可以提取第一列和第三列数据,并分两列显示:
cut -d ' ' -f1,3 data_fields.txt | paste | column -t
输出结果:
apple 100 banana 150 cherry 200
使用xargs
结合paste
进行多文件分栏合并
- 功能:结合
xargs
和paste
可以将多个文件的内容合并为一列显示。 - 示例:假设有三个文件
file1.txt
、file2.txt
和file3.txt
分别为:
# file1.txt A B C # file2.txt X Y Z # file3.txt 1 2 3
执行以下命令可以将三个文件的内容合并为三列显示:
paste file1.txt file2.txt file3.txt | xargs -n3 echo | column -t
输出结果:
A X 1 B Y 2 C Z 3