我为Python3实现了二进制搜索算法。问题在于它需要根据Python的字符串比较逻辑对文件进行排序。重击sort
不会这样做。示例:
aa first
aaA second
aaa third
此文件根据Python3正确排序,因为'aa' < 'aaA' < 'aaa'
如果我使用bash(sort --key=1 --field-separator=$'\t' file.txt
)对其进行排序,则会得到:
aaA second
aaa third
aa first
是否有有效种方法来为Python“正确”排序大文件?
教我的算法bash字符串比较方法会更容易吗?
sort
使用您的locale
规则进行排序。显然,您需要“ C”样式的排序。
因此更改您的语言环境,仅用于您的排序命令:
LC_ALL=C sort $your_file
此外,由于它是默认设置,因此您无需指定--key=1
。
并且--field-separator=\t
不会将其设置为制表符,而是将其设置为普通的“ t”。如果需要指定制表符,可以写--field-separator=$'\t'
。
bash的顺序取决于您的偏好。您的排序首选项可以通过
找到echo "LC_ALL"
我使用时
export LC_ALL=en_US.UTF-8
我得到您的“错误”订购。可以通过
“固定”export LC_ALL=C
或
# wrong: LC_ALL=C sort --key=1 --field-separator=\t file.txt
编辑:@mivk进行了一些更正,命令应该是
LC_ALL=C sort --field-separator=$'\t' file.txt