Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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_Sorting - Fatal编程技术网

Bash 如何按数字对字符串进行排序+;角色?

Bash 如何按数字对字符串进行排序+;角色?,bash,sorting,Bash,Sorting,我有目录列表信息如下所示 ..../2mstp/zdp/b.dat:FRAME 12 9625 La 16569H 6744SI ..../1.5mstp/zdp/d.dat:FRAME 18 9625 La 16577H 6744SI ..../1mstp/zdp/b.dat:FRAME 11 9625 La 16577H 6744SI ..../1mstp/zdp/c.dat:FRAME 78 9625 La 16569H 6744SI ..../500kstp/zdp/a.da

我有目录列表信息如下所示

..../2mstp/zdp/b.dat:FRAME 12 9625 La 16569H  6744SI 
..../1.5mstp/zdp/d.dat:FRAME 18 9625 La 16577H  6744SI 
..../1mstp/zdp/b.dat:FRAME 11 9625 La 16577H  6744SI
..../1mstp/zdp/c.dat:FRAME 78 9625 La 16569H  6744SI
..../500kstp/zdp/a.dat:FRAME 0 9625 Fe 6744SI
..../500kstp/zdp/b.dat:FRAME 23 9625 La 15438H 6744SI
......
..../30mstp/zdp/e.dat:FRAME 0 9625 La 13469H  6744SI
所有这些信息都会像上面那样写入一个文件(foo.dat)。我想根据第4-6列对数据进行排序并删除那些重复的数据,然后根据第一列对所有唯一的数据进行排序,特别是根据下面所示的500kstp、1mstp、1.5mstp、2mstp……进行排序。 我使用命令

sort-unk 4,6 foo.dat | sort-nk 1>boo.dat

对重复数据进行排序和删除。但是,我无法根据下面的第1列列出数据

..../500kstp/zdp/a.dat:FRAME 0 9625 Fe 6744SI
..../500kstp/zdp/b.dat:FRAME 23 9625 La 15438H 6744SI
..../1mstp/zdp/b.dat:FRAME 12 9625 La 16569H  6744SI 
..../1mstp/zdp/d.dat:FRAME 18 9625 La 16577H  6744SI 
......
..../30mstp/zdp/e.dat:FRAME 0 9625 La 13469H  6744SI

任何建议和帮助都将不胜感激。

如果您想按第一列排序,那么为什么“1mstp”会排在“30mstp”之前?在排序之前,顺序是随机的。1mstp可能在30mstp之后显示。我在第一个数据块上尝试了您的命令,您显示了。我的命令可以删除重复的数据。但是不能像上面显示的那样显示已排序的。在这里,我的观点是如何在删除重复数据后根据第1列对数据进行排序。对于重复的数据,我不想保留较小的关键字,比如保留1mstp而不是1.5mstp。