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。