我正在使用bash脚本从数据库中检索CSV样式的数据,我对其进行了排序并放入了外部文件。
一切似乎都是正确的,但是 sort ( sort(GNU coreutils)8.26 )不能对行进行排序。
那是我的bash脚本:
#!/bin/bash
mongoexport --type=csv ${QUERY} | /usr/bin/sort > export.csv
export.csv的内容与原始mongoexport-output相同-仍未排序。
令人困惑的事情是:当我直接从命令行运行此命令时,sort会执行应做的事情:对行进行排序。
我做错了什么?
答案 0 :(得分:1)
感觉就像我花了几天时间在这个问题上,但是我终于想出了解决办法。解决方案的关键是-每次-调试日志。当然, sort 提供了一个名为-debug 的命令行参数。
在返回未排序的数据之前,这会导致对 sort 的这种简短提示:
sort:设置区域设置失败;使用简单的字节比较
解决方案是设置一个名为 LC_ALL 的环境变量(由于某些我不知道的原因,在Ubuntu上,我不得不使用 LANG env变量)。这就是我的导出脚本的内容:
#!/bin/bash
export LANG='en_GB.UTF-8'
export LC_ALL='en_US.UTF-8'
mongoexport --type=csv ${QUERY} | /usr/bin/sort > export.csv