2个不稳定版本
0.2.0 | 2023年5月11日 |
---|---|
0.1.1 | 2022年12月31日 |
#1050 in 文本处理
每月43次下载
用于 hns
19KB
300 行
hns
— Human Numeric Sort v0.2.0 (⏫︎2023-05-11)
- © 2022–2023 Fredrick R. Brennan 和
hns
作者- Apache 2.0许可证,见LICENSE。
man
页面
软件包
hns_0.2.0_amd64.deb
(适用于Debian,Ubuntu,Pop! OS等)hns-0.2.0-1.x86_64.rpm
(适用于Fedora,CentOS n,Red Hat Linux等)humnumsort.PKGBUILD
(适用于Arch Linux)
或者如果您有Rust工具链,可以通过Rust的包管理器 cargo
安装
cargo安装 hns
商业
这种情况有没有发生过您?
$ seq 1 30 | awk '{printf "data_%s.txt\n", $1}' | sort -h > important_filenames.txt
$ sort -h < important_filenames.txt
data_10.txt
data_11.txt
data_12.txt
data_13.txt
data_14.txt
data_15.txt
data_16.txt
data_17.txt
data_18.txt
data_19.txt
data_1.txt
data_20.txt
data_21.txt
data_22.txt
data_23.txt
data_24.txt
data_25.txt
data_26.txt
data_27.txt
data_28.txt
data_29.txt
data_2.txt
data_30.txt
data_3.txt
data_4.txt
data_5.txt
data_6.txt
data_7.txt
data_8.txt
data_9.txt
哦,不!您忘了GNU coreutils sort
包的 -h
标志实际上并不做它声称的事情,并且由于各种历史原因无法修复(现在跟紧我,别睡着)!
-h, --human-numeric-sort
compare human readable numbers (e.g., 2K 1G)
如果只有更好的方法!
嗨,FREDDY MAYS在这里,带来了另一个FUR-tastic发明。所有的数字,只为您排序!
$ mv important_filenames.txt tests/data/README_example.txt
$ hns < tests/data/README_example.shuf.txt
data_1.txt
data_2.txt
data_3.txt
data_4.txt
data_5.txt
data_6.txt
data_7.txt
data_8.txt
data_9.txt
data_10.txt
data_11.txt
data_12.txt
data_13.txt
data_14.txt
data_15.txt
data_16.txt
data_17.txt
data_18.txt
data_19.txt
data_20.txt
data_21.txt
data_22.txt
data_23.txt
data_24.txt
data_25.txt
data_26.txt
data_27.txt
data_28.txt
data_29.txt
data_30.txt
哇!
但是,如果您在下个Unix时代使用 git pull
,您还会得到我的超级无敌负数理解版本!
$ seq -10 10 | awk '{printf "data_%s.txt\n", $1}' | sort -h > tests/data/README_example2.shuf.txt
在您的数字之前是悲伤而单调的...
data_0.txt
data_-10.txt
data_10.txt
data_-1.txt
data_1.txt
data_-2.txt
data_2.txt
data_-3.txt
data_3.txt
data_-4.txt
data_4.txt
data_-5.txt
data_5.txt
data_-6.txt
data_6.txt
data_-7.txt
data_7.txt
data_-8.txt
data_8.txt
data_-9.txt
data_9.txt
但现在它们可以变得极其有序!(哇!)
$ hns < tests/data/README_example2.shuf.txt
data_-10.txt
data_-9.txt
data_-8.txt
data_-7.txt
data_-6.txt
data_-5.txt
data_-4.txt
data_-3.txt
data_-2.txt
data_-1.txt
data_0.txt
data_1.txt
data_2.txt
data_3.txt
data_4.txt
data_5.txt
data_6.txt
data_7.txt
data_8.txt
data_9.txt
data_10.txt
使用起来非常简单!没有命令行选项!只有标准输入和标准输出,一劳永逸!(真的,弗雷迪?)(是的!)
它不仅适用于短文件,哦不不不!它是用Rust编写的,所以您知道它可以处理甚至最大的数据溢出,例如整个随机排序的A类网络!
$ time RUST_LOG=INFO target/release/hns < /tmp/0.0.0.0/8.shuf.txt > /dev/null
[2022-09-20T14:58:00Z INFO hns] Reading done; got 16777216 lines in 348513µs
[2022-09-20T14:58:28Z INFO hns] Sorting done; sorted 16777216 lines in 27122184µs
[2022-09-20T14:58:32Z INFO hns] Writing done; wrote in 4370570µs
real 0m31.855s
user 0m30.306s
sys 0m1.548s
每行有四个比较点的1600万行排序在不到30秒内完成!这是弗雷迪·梅斯的保证。
基准测试数据
-
您可能希望将其克隆为
$ git clone https://github.com/ctrlcctrlv/humnumsort-test-data/ tests/data/expensive
待办事项
- 通过另一个二进制数进行零填充?
许可证
本软件遵循Apache许可证2.0版本(以下简称“许可证”);除非您遵守许可证,否则不得使用此文件。您可以在以下地址获取许可证副本:
https://apache.ac.cn/licenses/LICENSE-2.0
除非适用法律要求或书面同意,否则在许可证下分发的软件按“原样”分发,不提供任何形式的保证或条件,无论是明示的还是默示的。请参阅许可证了解管理许可证下权限和限制的特定语言。
依赖项
~8–21MB
~272K SLoC