我正在使用 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 做了它应该做的事情:它对行进行排序。
我做错了什么?
最佳答案
感觉我在这个问题上花了几天时间,但我终于想出了该怎么做。解决方案的关键是 - 每次都是 - 调试日志。当然,sort 提供了一个名为--debug 的命令行参数。
在返回未排序的数据之前,这导致了这个简单而简短的排序通知:
sort: failed to set locale; using simple byte comparison
解决方案是设置一个名为 LC_ALL 的环境变量(由于某些我还不知道的原因,在 Ubuntu 上我不得不使用 LANG 环境变量)。这就是我的导出脚本的内容:
#!/bin/bash
export LANG='en_GB.UTF-8'
export LC_ALL='en_US.UTF-8'
mongoexport --type=csv ${QUERY} | /usr/bin/sort > export.csv
关于linux - 排序在 bash 脚本中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52607495/