我需要按第三列对平面文件进行排序,使第一列保持不变[第一列已经排序](在 linux 中)。(第二列可能会改变)
示例 i/p 文件:-
b:di:wave
b:di12:red
b:di12:wave
b:di06:pir
应该看起来像: -
b:di06:pir
b:di12:red
b:di12:wave
bast:di:wave
我尝试了几个排序选项,但我只能按第二列而不是第三列排序。
有人可以帮忙吗?
我需要按第三列对平面文件进行排序,使第一列保持不变[第一列已经排序](在 linux 中)。(第二列可能会改变)
示例 i/p 文件:-
b:di:wave
b:di12:red
b:di12:wave
b:di06:pir
应该看起来像: -
b:di06:pir
b:di12:red
b:di12:wave
bast:di:wave
我尝试了几个排序选项,但我只能按第二列而不是第三列排序。
有人可以帮忙吗?
试试这个:
sort -t: -k1,1 -k3 data.txt
给出:
bast:disp-san-d5-06:piranha
bast:display-san-12:redbird
bast:display-san-07:waverider
bast:display-san-12:waverider
这将使用第一个字段作为主键进行排序,将第三个字段作为辅助键将行拆分为字段:
详情:
data.txt
包含您帖子中的 4 行。
您可以指定多个字段作为排序键,请参阅手册页
-k1,1
表示在第一个字段上排序(从字段 1 开始并在字段 1 结束,否则它将继续使用该行的其余部分来确定排序)
-k3
表示在第三个字段上排序作为辅助键。由于后面没有其他字段,因此无需指定-k3,3
,但也不会受到伤害。
-t:
表示以字符分隔字段:
,否则默认使用空白
更多信息请参阅此 SO 问题Sorting multiple keys with Unix sort和sort 手册页