从bash脚本内部排序不起作用

时间:2018-10-02 11:30:17

标签: linux bash sorting

我正在使用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会执行应做的事情:对行进行排序。

我做错了什么?

1 个答案:

答案 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