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

在Bash中粘贴文件时如何对齐行并按字母排序?

在粘贴文件内容为列时对齐行并按字母排序的方法

要实现将多列内容按字母顺序统一对齐,让相同词汇出现在同一行、缺失位置留空的效果,可以按以下步骤操作:

核心思路

先提取所有列的唯一词汇并按字母排序,以此作为全局行基准;再针对每一列,对照基准列表填充内容(存在的词汇保留,缺失的留空);最后合并列并对齐格式。

具体实现命令

# 定义各列的原始内容
col1="bike car lane road wheel"
col2="car rollers wheel"
col3="bike lane tire wheel"

# 生成全局排序后的唯一词汇列表
all_words=$(printf '%s\n' $col1 $col2 $col3 | sort -u)

# 处理每一列并合并对齐
paste \
  <(printf '%s\n' "$all_words" | while read w; do grep -qx "$w" <(printf '%s\n' $col1) && echo "$w" || echo; done) \
  <(printf '%s\n' "$all_words" | while read w; do grep -qx "$w" <(printf '%s\n' $col2) && echo "$w" || echo; done) \
  <(printf '%s\n' "$all_words" | while read w; do grep -qx "$w" <(printf '%s\n' $col3) && echo "$w" || echo; done) | column -s $'\t' -t

命令解释

  • all_words:收集所有列的内容,通过sort -u去重并按字母排序,得到所有需要展示的行基准。
  • 每个<()中的循环:遍历基准列表,用grep -qx检查当前词汇是否在对应列中,存在则输出词汇,否则输出空行。
  • paste:将三个处理后的列按行合并。
  • column -s $'\t' -t:以制表符为分隔符,自动对齐所有列的格式。

运行结果

bike            bike
car     car      
lane            lane
road             
        rollers  
                tire
wheel   wheel   wheel

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 02:55:42