Использование csvkit для сортировки по нескольким столбцам, обратный порядок для некоторых - PullRequest
0 голосов
/ 22 октября 2018

Я использую csvsort из csvkit для сортировки данных в формате 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 голосов
/ 31 марта 2019

путь с 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
...