我想按如下方式对csv进行排序,我想要的是
1.按列2排序
1.如果列相同,则按列3排序(数字)
我是这样做:
$ sort -t"," -k2 -nk3 /tmp/test.csv
55b64670abb9c0663e77de84,525e3bfad07b4377dc142a24:9999,0.081032
5510b33ec720d80086865312,525e3bfad07b4377dc142a24:9999,0.081033
55aca6a1d2e33dc888ddeb31,525e3bf7d07b4377d31429d2:2,0.081034
55aca6a1d2e33dc888ddeb31,525e3bf7d07b4377d31429d2:2,0.081034
5514548ec720d80086bfec46,525e3bfad07b4377dc142a24:9999,0.081035
551d4e21c720d80086084f45,525e3bfad07b4377dc142a24:9999,0.081036
557bff5276bd54a8df83268a,525e3bfad07b4377dc142a24:9999,0.081036
这个结果很奇怪,它先按列3排序,然后按列2排序
3条答案
按热度按时间31moq8wy1#
此命令似乎产生了正确的输出:
我使用逗号将顺序限制在该列,并使用数字(
-n
)开关切换到第三列的最后一个字符。它产生:
qvsjd97n2#
排序将工作排序数据的csv & txt文件,它会打印输出的控制台
-t表示列由'|',-k1 -k2表示--它将按列1排序数据,然后按列2排序
要将结果存储在输出文件中,请使用以下命令
如果你想忽略标题行,那么使用下面的命令
head -n1 INPUT_FILE,只打印文件的第一行,即标题
这个特殊的tail语法从第二行到EOF获取文件。
j1dl9f463#
虽然
sort
命令有一些技巧可以部分处理CSV文件,但它不能处理所有CSV格式的特性。csvsort
是一个很好的选项: