我正在尝试转换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
如果可以使用像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不是样本数据中的最南端。 希望这可以帮助。