Emre Uygun Asked: 2021-03-17 13:11:17 +0800 CST2021-03-17 13:11:17 +0800 CST 2021-03-17 13:11:17 +0800 CST 如何对具有多个前置要求的字符串进行排序? 772 我有一堆字符串(大约 300 个),它们都是 4 个字母,比如 XYZA, ZHF3, RTt2 etc.我想根据 2 个要求对它们进行排序。 按最后 2 个字母的顺序对它们进行排序 根据前 2 个字母对包含相同最后 2 个字母的单词进行排序 这意味着我有格式为 XXYY 的字符串,并希望使用显示的规则对它们进行排序。 我正在尝试这样做,sort -k.1.3,1.4但相同的那些是随机排序的,例如我该15AA, a2AA, 0CAA etc.如何摆脱它? linux bash 2 个回答 Voted user1686 2021-03-17T13:22:42+08:002021-03-17T13:22:42+08:00 反向执行操作——首先按前两个字母排序,然后按后两个字母排序。我认为你甚至可以这样做: cat file | sort | sort -k 1.3 -s 该sort命令可以执行稳定的排序,即如果两行“相等”,它将保持它们彼此的相对顺序。因此,在第二步中,具有相同第 3-4 个字母的行将方便地保留它们从第一步开始的顺序。 Best Answer Kamil Maciorowski 2021-03-17T13:28:43+08:002021-03-17T13:28:43+08:00 -k可以多次使用。当有多个键字段时,只有在所有较早的键比较相等之后,才比较后面的键。 <datafile sort -k 1.3,1.4 -k 1.1,1.2 记住排序取决于LC_COLLATE.
反向执行操作——首先按前两个字母排序,然后按后两个字母排序。我认为你甚至可以这样做:
该
sort
命令可以执行稳定的排序,即如果两行“相等”,它将保持它们彼此的相对顺序。因此,在第二步中,具有相同第 3-4 个字母的行将方便地保留它们从第一步开始的顺序。-k
可以多次使用。当有多个键字段时,只有在所有较早的键比较相等之后,才比较后面的键。记住排序取决于
LC_COLLATE
.