我经常想要对带有数字的字符串进行排序,以便在排序时,例如 abc_2, abc_1, abc_10结果abc_1, abc_2, abc_10.我见过的每种排序机制abc_1, abc_10, abc_2都是从左边开始的.
有没有有效的方法来排序以获得我想要的结果?查看每个角色,确定它是否为数字,从后续数字中构建子串并将其作为数字排序的想法实在令人震惊bash.
没有胡子*nix guru实现了sort带--sensible_numerical选项的替代版本吗?
在目录"data"中是这些文件:
command-1.9a-setup
command-2.0a-setup
command-2.0c-setup
command-2.0-setup
我想对文件进行排序以获得此结果:
command-1.9a-setup
command-2.0-setup
command-2.0a-setup
command-2.0c-setup
我试过这个
find /data/ -name 'command-*-setup' | sort --version-sort --field-separator=- -k2
Run Code Online (Sandbox Code Playgroud)
但输出是
command-1.9a-setup
command-2.0a-setup
command-2.0c-setup
command-2.0-setup
我找到的唯一方法给了我想要的输出
tree -v /data
Run Code Online (Sandbox Code Playgroud)
我怎样才能按需要的顺序对输出进行排序?
我想以数字方式在文件中对显示的行进行排序.它没有像预期的那样出现.
$ cat test
abc1
abc10
abc2
abc11
abc20
abcd1
abcd10
abcd2
abcd11
abcd20
$
Run Code Online (Sandbox Code Playgroud)
输出: -
$ sort test
abc1
abc10
abc11
abc2
abc20
abcd1
abcd10
abcd11
abcd2
abcd20
$
Run Code Online (Sandbox Code Playgroud)
产量预期: -
abc1
abc2
abc10
abc11
abc20
abcd1
abcd2
abcd10
abcd11
abcd20
Run Code Online (Sandbox Code Playgroud)
请帮忙,谢谢你的支持