linux - 如何在 bash 中对文本文件行进行 block 排序?

标签 linux bash sorting

我有一个以横线分隔的文本文件,如下所示:

stringC|rest-of-lineC3
stringC|rest-of-lineC1
stringC|rest-of-lineC2
stringA|rest-of-lineA2
stringA|rest-of-lineA1
stringB|rest-of-lineB4
stringB|rest-of-lineB1
stringB|rest-of-lineB3
stringB|rest-of-lineB2

我需要按 | 之前的字符串对其进行分块排序,而无需对栏后的内容进行二次排序。所以下面的例子应该被分类为:

stringA|rest-of-lineA2
stringA|rest-of-lineA1
stringB|rest-of-lineB4
stringB|rest-of-lineB1
stringB|rest-of-lineB3
stringB|rest-of-lineB2
stringC|rest-of-lineC3
stringC|rest-of-lineC1
stringC|rest-of-lineC2

但不是:

stringA|rest-of-lineA1
stringA|rest-of-lineA2
stringB|rest-of-lineB1
...

有没有办法在 bash 脚本中使用 sort 或任何其他命令执行此操作?

如果原始文件不在 block 中,我怎样才能得到与上面相同的结果,即它看起来像这样:

stringC|rest-of-lineC3
stringA|rest-of-lineA2
stringC|rest-of-lineC1
stringA|rest-of-lineA1
stringB|rest-of-lineB4
stringB|rest-of-lineB1
stringC|rest-of-lineC2
stringB|rest-of-lineB3
stringB|rest-of-lineB2

最佳答案

使用 -s 选项排序以获得稳定

sort -st'|' -k1,1 file

初始 block 无关紧要,应该对两者都有效。

关于linux - 如何在 bash 中对文本文件行进行 block 排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36843998/

相关文章:

c - 如何在C中使用pthread来统计单词出现的次数?

java - ap_proxy_connect_backend 为 (127.0.0.1) 禁用 worker

linux - 如何将Azure中的Linux服务器迁移到AWS?

java - 按子类 Java 中的类型对通过继承创建的数组进行排序

Python numpy 将二维数组转换为已排序的一维数组

java - ArrayList 排序时出现 NullPointer

linux - Apache 域到 IP :port mapping

bash - 如何在 bash stdout 中将多行转换为一行?

bash - 如果 grep 失败则删除该文件

bash - 如何在 bash/batch 脚本中递减浮点变量