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

如何按最后一列排序列数不同的点分隔非CSV文本文件

按最后一列排序(点分隔、列数不固定的文本)

当文本行以点为分隔符且列数固定时,比如:

aa.bb
cc.dd
...

可以直接用以下命令按最后一列排序:
sort -t. -k2,2 file

但如果文本的列数不固定,比如:

aa.b.xb
cc.dd
xx.cc.aa
a.b.c.d.e
...

想要按最后一列排序得到如下结果:

xx.cc.aa
cc.dd
a.b.c.d.e
aa.b.xb
...

可以用下面两种方法实现:

方法一:通用方案(适配所有sort版本)

借助awk先提取最后一列作为排序键,排序后再还原原行:

awk -F. '{print $NF "\t" $0}' file | sort -k1,1 | cut -f2-

步骤说明:

  • awk -F. '{print $NF "\t" $0}':以点为分隔符,将每行的最后一列($NF代表最后一个字段)和原行用制表符拼接输出
  • sort -k1,1:按第一列(即原行的最后一列)排序
  • cut -f2-:移除开头的排序键,还原成原行格式

方法二:GNU sort专属简化方案

如果你的系统使用的是GNU sort(绝大多数Linux发行版默认都是),可以直接利用反向字段索引语法,指定按倒数第一个字段排序:

sort -t. -k -1,-1 file

这里的-k -1,-1表示以倒数第一个字段作为排序依据,无需额外预处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 12:01:08