使用bash按第5列排序csv文件

mrm*_*084 13 linux bash

该文件看起来像

5.1,3.5,1.4,0.2,Banana
4.9,3.0,1.4,0.6,Apple
4.8,2.8,1.3,1.2,Apple
Run Code Online (Sandbox Code Playgroud)

我需要拥有它

4.9,3.0,1.4,0.2,Apple
4.8,2.8,1.3,1.2,Apple
5.1,3.5,1.4,0.2,Banana
Run Code Online (Sandbox Code Playgroud)

我一直在尝试使用

sort -t, -k5 file.csv > sorted.csv
Run Code Online (Sandbox Code Playgroud)

它所做的一切就是成功

5.1,3.5,1.4,0.2,Banana
4.8,2.8,1.3,1.2,Apple
4.9,3.0,1.4,0.6,Apple
Run Code Online (Sandbox Code Playgroud)

我怎么做到这样?它似乎根本没有排序.

Big*_*oke 7

GNU 排序对区域设置敏感,这可能会导致异常。尝试以下操作,看看它是否有所作为:

LC_ALL=C sort -t, -k5 file.csv > sorted.csv
Run Code Online (Sandbox Code Playgroud)

  • 这正是我所需要的。谢谢。 (2认同)

小智 7

这就是你需要的东西

# sort -t . -nrk2 sorted.csv 
4.9,3.0,1.4,0.6,Apple
4.8,2.8,1.3,1.2,Apple
5.1,3.5,1.4,0.2,Banana
Run Code Online (Sandbox Code Playgroud)