linux - Unix 基于分号对行进行排序

标签 linux sorting unix

我尝试对以下文件进行排序:

$ cat testfile
ZBOX-BATCH-SAMEDI;CMC10
ZBOX-BATCH-SAMEDI_D1;HEB05
ZBOX-BATCH-SAMEDI;BMD15
ZBOX-BATCH-SAMEDI_D3;HEB03
ZBOX-BATCH-SAMEDI_D3_M1;ODP47
ZBOX-BATCH-SAMEDI_D1_M1;TER23
ZBOX-BATCH-SAMEDI_D3;HEB02
ZBOX-BATCH-SAMEDI_D1;HEB02
ZBOX-BATCH-SAMEDI;DEA11
ZBOX-BATCH-SAMEDI;DEA11A

我得到:

$ sort testfile
ZBOX-BATCH-SAMEDI;BMD15
ZBOX-BATCH-SAMEDI;CMC10
ZBOX-BATCH-SAMEDI_D1;HEB02
ZBOX-BATCH-SAMEDI_D1;HEB05
ZBOX-BATCH-SAMEDI_D1_M1;TER23
ZBOX-BATCH-SAMEDI_D3;HEB02
ZBOX-BATCH-SAMEDI_D3;HEB03
ZBOX-BATCH-SAMEDI_D3_M1;ODP47
ZBOX-BATCH-SAMEDI;DEA11
ZBOX-BATCH-SAMEDI;DEA11A

但是,我期待的是:

ZBOX-BATCH-SAMEDI;BMD15
ZBOX-BATCH-SAMEDI;CMC10
ZBOX-BATCH-SAMEDI;DEA11
ZBOX-BATCH-SAMEDI;DEA11A
...

也就是说,我希望第一个分号之前带有字符串 ZBOX-BATCH-SAMEDI 的所有行首先出现,然后是带有 ZBOX-BATCH-SAMEDI_D1 的行等

我查看了man sort,并尝试了不同的选项,例如-g-k-t,但我没成功。我该怎么做?

最佳答案

只需告诉sort分隔符是;并且您想根据第二列进行排序:

sort -t";" -k2 file

它返回:

ZBOX-BATCH-SAMEDI;BMD15
ZBOX-BATCH-SAMEDI;CMC10
ZBOX-BATCH-SAMEDI;DEA11
ZBOX-BATCH-SAMEDI;DEA11A
ZBOX-BATCH-SAMEDI_D1;HEB02
ZBOX-BATCH-SAMEDI_D3;HEB02
ZBOX-BATCH-SAMEDI_D3;HEB03
ZBOX-BATCH-SAMEDI_D1;HEB05
ZBOX-BATCH-SAMEDI_D3_M1;ODP47
ZBOX-BATCH-SAMEDI_D1_M1;TER23

关于linux - Unix 基于分号对行进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30503433/

相关文章:

c - 如何使用popen同时输入和输出?

linux - 如何在 linux 中杀死多个进程?

linux - RSS 是否包含内核空间内存?

linux - curl 没有使用我的 "&"登录 URL

python - python中小写字母排序

linux - 了解 vi 编辑器的内部结构

c++ - 串行端口 : Read data problem, 未读取完整数据

javascript - n* 数组中的替代项合并

mysql - 2 列的复杂订单查询

linux - 搜索模式并删除所有行