我正在尝试转换CSV文件中第一列的值,并将这些值从最低纬度/最高经度(西南)到最高纬度/最低经度(东北)排列成矩阵。
此CSV文件包含数百行数据。
我知道我将需要使用sort
来完成此任务,但是,我不确定到目前为止我的内容是否足够。
示例:
18,49.000,-96.000
30,41.000,-109.000
65,31.000,-80.000
25,47.000,-75.000
45,37.000,-90.000
60,30.000,-100.000
70,30.000,-118.000
...
...
...
Bash代码:
sort -t',' -nr -k2 -k3
结果:
18,49.000,-96.000
25,47.000,-75.000
30,41.000,-109.000
45,37.000,-90.000
65,31.000,-80.000
60,30.000,-100.000
70,30.000,-118.000
示例概念图:
预期的矩阵设置:
18
25
30
45
70 60
65
答案 0 :(得分:0)
如果可以使用像Perl这样的通用编程语言,请尝试以下方法:
perl -e '
while (<>) {
($code, $lat, $long) = split(/,/);
$lats{$lat}++;
$longs{$long}++;
$map{$lat, $long} = $code;
}
for $lat (sort {$b <=> $a} keys %lats) {
for $long (sort {$a <=> $b} keys %longs) {
$str = $map{$lat, $long} || " ";
print $str . " ";
}
print "\n";
}' samplefile
,结果如下:
18
25
30
45
65
70 60
请注意,样本数据中#65不是最南端 希望这会有所帮助。