使用 csvkit 对多列进行排序,对某些列进行倒序
Using csvkit to sort on multiple columns, reverse order for some
我正在使用 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
相同)。
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
我正在使用 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
相同)。
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