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

Linux/Bash中按分隔符将命令输出/文件内容分多列打印方法

在Linux/Bash中按指定分隔符拆分命令输出为多列的实用方法

嘿,我懂你那种搜不到合适方案的烦躁——毕竟有时候特定场景的小问题,搜索引擎确实抓不到点。针对你说的在Linux/Bash环境下按指定分隔符拆分命令输出(或者处理你那个用换行+短横线分隔的文件),我整理了几个实用的方法,都是日常运维里常用的:

1. 用awk搞定复杂分隔场景

awk绝对是处理文本的瑞士军刀,不管是单一分隔符、多分隔符,还是要过滤掉无关行(比如你文件里的短横线分隔行),它都能轻松应对。

举个例子,假设你的文件内容是这样的:

apple,banana,orange,grape
-----------------------------------
cat,dog,bird
-----------------------------------
red,blue,green,yellow,purple

如果要忽略短横线行,只提取每行的第2和第4列(用逗号当分隔符),直接用这个命令:

awk -F',' '!/^-+$/{print $2, $4}' your_data.txt
  • -F',':指定逗号为字段分隔符
  • !/^-+$/{}:过滤掉全是短横线的行
  • $2, $4:提取第2和第4列,输出时默认用空格分隔

要是你想直接处理命令输出,比如cat your_data.txt | awk ...也完全可行。

2. 用cut处理简单固定分隔符

如果你的分隔符是单一且固定的(比如空格、冒号、制表符),cut用起来更简洁直接,学习成本也低。

比如还是上面的例子,用cut提取第1和第3列,同时过滤掉短横线行:

cut -d',' -f1,3 your_data.txt | grep -v '^---'
  • -d',':指定分隔符为逗号
  • -f1,3:提取第1和第3列
  • grep -v '^---':去掉以短横线开头的分隔行

日常用的话,比如ls -l | cut -d' ' -f1,9,能快速提取文件权限和文件名列。

3. 用column让不齐的列自动对齐

你提到数据行长度不一,要是拆分后想让列对齐得整整齐齐,column命令是绝佳搭档。比如把上面的有效数据行按逗号拆分成对齐的列:

awk '!/^-+$/' your_data.txt | column -t -s','
  • awk '!/^-+$/':先过滤掉短横线行
  • column -t:自动对齐列
  • -s',':指定原始分隔符为逗号

执行后输出会自动排版成整齐的表格样式,看着舒服多了。

4. 用sed处理特殊替换式拆分

如果你的需求是把短横线分隔的块转换成列(比如把每个数据块横向排列),可以用sed写个小脚本:

sed '/^-+$/{s/.*//;x;b}; H; ${x;s/\n/|/g; s/|-----------------------------------|/\n/g;p}' your_data.txt

这个脚本会把每个数据块用竖线分隔成列,同时把短横线块换成换行,适合需要横向展示多个数据块的场景。

这些方法应该能覆盖你大部分需求了,根据你的实际分隔符和场景选对应的工具就行~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:07:31