使用csvkit对多列进行排序,对某些列进行反向排序

时间:2018-10-22 10:20:09

标签: csvkit

我正在使用csvkit中的csvsort对我的csv数据进行排序。我想基于两列进行排序,其中一列应为相反的顺序。有可能吗?

例如:

echo 'v1,v2,v3
      a,1,z
      b,3,x
      c,2,y
      a,2,y
      b,1,x
      c,3,z' | csvsort -c1,2 |csvlook

给予

| v1 | v2 | v3 |
| -- | -- | -- |
| a  |  1 | z  |
| a  |  2 | y  |
| b  |  1 | x  |
| b  |  3 | x  |
| c  |  2 | y  |
| c  |  3 | z  |,

但我想要

| v1 | v2 | v3 |
| -- | -- | -- |
| a  |  2 | z  |
| a  |  1 | y  |
| b  |  3 | x  |
| b  |  1 | x  |
| c  |  3 | y  |
| c  |  2 | z  |.

csvsort -r -c1,2颠倒了两列的顺序。 csvsort -rc 1 -c 2仅在第2列上排序(反之,与csvsort -rc 2相同)。

1 个答案:

答案 0 :(得分:0)

csvkit的使用方式是

csvsql --query "select * from input order by v1, v2 desc" input.csv

它给你

v1 v2 v3
a  2  y
a  1  z
b  3  x
b  1  x
c  3  z
c  2  y