Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 按序号排序_Bash_Unix_Sed_Awk - Fatal编程技术网

Bash 按序号排序

Bash 按序号排序,bash,unix,sed,awk,Bash,Unix,Sed,Awk,我希望这些行按照序号(每行的最后两位)进行如下排序,max seq是03,03之后我需要相同交换机id的seq 01(行A、B中的第一个字符): 上面的列表实际上是ls命令的输出。 我有来自不同开关(A、B、C)的文件。它们的第三个字段是序列号。对于每个文件,我都需要使用ile的名称来做其他事情。 但这应该一次一个开关完成,我也需要按顺序完成(考虑第三个字段)。如果序列为最大值,则我需要使用01作为序列的文件,但文件与之前的01序列文件不同。需要重复此步骤,直到同一开关的所有文件都结束。假设预期

我希望这些行按照序号(每行的最后两位)进行如下排序,max seq是03,03之后我需要相同交换机id的seq 01(行A、B中的第一个字符):

上面的列表实际上是ls命令的输出。 我有来自不同开关(A、B、C)的文件。它们的第三个字段是序列号。对于每个文件,我都需要使用ile的名称来做其他事情。
但这应该一次一个开关完成,我也需要按顺序完成(考虑第三个字段)。如果序列为最大值,则我需要使用01作为序列的文件,但文件与之前的01序列文件不同。需要重复此步骤,直到同一开关的所有文件都结束。

假设预期输出为近似值(即示例输出中的第二列可能不同):


我没有彻底测试脚本,但是…

问题一点也不清楚。是否也要按第一列进行排序?为什么
A_bcd_01
紧随其后
A_jfc_03
?我想先用第一列进行排序,然后用第三列分别对A和B进行排序。我不在乎第二列仍然无法解释为什么
B_mdd_01
出现在
B_dlf_03
之后。我很确定“sorted”是个错误的词。我不确定什么是正确的词,但弄清楚这一点可能是解决问题的关键。对不起,你的问题仍然不清楚。请解释“为什么B_mdd_01排在B_dlf_03之后”,或者这种情况无关紧要?我们能完全忽略第二栏吗?这个例子显示了两个相互分离的B_*01,看起来不像是这样。第二列是否有意按相反顺序排序?陛下否,因为在A部分中,第2列的排序正常。你看到我们的困惑了吗?祝你好运
A_xyz_01
B_mdd_01
A_djk_02
A_jfc_03
B_dmk_01
A_bcd_01
B_csd_02
B_dlf_03
A_jhf_02
B_dld_02
A_xyz_01
A_djk_02
A_jfc_03
A_bcd_01
A_jhf_02
B_dmk_01
B_csd_02
B_dlf_03
B_mdd_01
B_dld_02
awk -F_ '{ 
  print $0, b[$3, $1]++ 
  }' OFS=_ infile | 
    sort -t_ -k1,1 -k4,4n -k3n |
      cut -d_ -f1-3