4 python unix sorting bash shell
我正在尝试使用unix sort命令以"直观"/自然的方式按字母顺序对一串字母和数字进行排序,但无法正确排序.我有这个文件:
$ cat ~/headers
@42EBKAAXX090828:6:100:1699:328/2
@42EBKAAXX090828:6:10:1077:1883/2
@42EBKAAXX090828:6:102:785:808/2
Run Code Online (Sandbox Code Playgroud)
我想用字母数字来排序,直觉上@42EBKAAXX090828:6:10:...是第一个(因为10小于100和102),第二个是@42EBKAAXX090828:6:100...第三个@42EBKAAXX090828:6:102:204:1871/2.
我知道建议对线内的特定位置进行排序,但:这里的位置可能会有所不同,因此这不是一个通用且可行的解决方案.
我试过了:
sort --stable -k1,1 ~/headers > foo
Run Code Online (Sandbox Code Playgroud)
与各种组合-n和-u参数,但它没有给出正确的顺序.
如何从bash使用sort或从Python中有效地完成这项工作?我想将它应用于大小为4-5 GB的文件,因此包含数百万行.
谢谢!
tob*_*ies 11
该-V选项似乎做你想要的 - 自然分类.明显用于版本号(因此选择了字母)
sort -V ~/headers
Run Code Online (Sandbox Code Playgroud)
输出
@42EBKAAXX090828:6:10:1077:1883/2
@42EBKAAXX090828:6:100:1699:328/2
@42EBKAAXX090828:6:102:785:808/2
Run Code Online (Sandbox Code Playgroud)