将文件排序为字符

时间:2017-09-13 12:34:25

标签: bash sorting

我正在写一个bash脚本。我有这样的文件

    $(document).on('click','.bronze', function(){ //stuff goes here})

我想按照特定的方式对此文件进行排序。让我们在两个./1#1#d41d8cd98f00b204e9800998ecf8427e ./11.txt#2#d41d8cd98f00b204e9800998ecf8427e ./12/1#1#d41d8cd98f00b204e9800998ecf8427e ./12/1#2#d41d8cd98f00b204e9800998ecf8427e ./12/1.txt#1#d41d8cd98f00b204e9800998ecf8427e ./12/1.txt#2#d41d8cd98f00b204e9800998ecf8427e ./12/2.txt#1#d41d8cd98f00b204e9800998ecf8427e ./12/2.txt#2#d41d8cd98f00b204e9800998ecf8427e ./1#2#d41d8cd98f00b204e9800998ecf8427e ./13#2#d41d8cd98f00b204e9800998ecf8427e ./2.txt#1#5d74727d50368c4741d76989586d91de ./2.txt#2#5d74727d50368c4741d76989586d91de 字符第二部分之间调用第一个#部分的字符。例如,给出如下这样的一行:

#

第一节:./1

第二节:2

我想要实现的是首先根据第一部分然后根据第2部分对该文件进行排序。所以这个例子的错误是第9行,它应该是第2行。

有没有简单的方法来实现这一目标?我不确定如何解决这个问题。也许我应该以某种方式将此文件排序到第一个./1#2#d41d8cd98f00b204e9800998ecf8427e 然后再根据第二部分排序?即使这是一个很好的答案,也不确定该怎么做。

预期结果:

#

1 个答案:

答案 0 :(得分:2)

好像你只想按多个键排序:

$ sort -t# -k1,1 -k2 file
./1#1#d41d8cd98f00b204e9800998ecf8427e
./1#2#d41d8cd98f00b204e9800998ecf8427e
./11.txt#2#d41d8cd98f00b204e9800998ecf8427e
./12/1#1#d41d8cd98f00b204e9800998ecf8427e
./12/1#2#d41d8cd98f00b204e9800998ecf8427e
./12/1.txt#1#d41d8cd98f00b204e9800998ecf8427e
./12/1.txt#2#d41d8cd98f00b204e9800998ecf8427e
./12/2.txt#1#d41d8cd98f00b204e9800998ecf8427e
./12/2.txt#2#d41d8cd98f00b204e9800998ecf8427e
./13#2#d41d8cd98f00b204e9800998ecf8427e
./2.txt#1#5d74727d50368c4741d76989586d91de
./2.txt#2#5d74727d50368c4741d76989586d91de

-k1,1表示只按第一个字段排序,然后 -k2表示从其他字段排序,从第二个字段开始。 -t#表示字段由#分隔。