0

我从维基百科获取了两个关于一个国家的数据集,将它们粘贴到 LibreOffice calc 中并将它们保存为 .csv 文件。例如:

第一个 .csv 文件:

"Algeria", 76
"Angola", 100
...
"United Arab Emirates", 27

第二个 .csv 文件:

"Algeria", .67
"Argentina", .45
...
"Zimbabwe", .57

我想过滤两个 .csv 文件中具有数据点的国家/地区的列表(假设没有重复或替代拼写),匹配两个数据点(例如,阿尔及利亚的 76、.67)并输出一些基本的散点图,以获得快速的视觉想法他们的关系。

我尝试了很多不同的方法来解析文件,其中一些几乎可以工作,但由于对 awk、grep、bash 管道、gnuplot 等了解不够,我一直被绊倒。

我确信在 Python 或 Perl 或类似的语言中会更容易/更好地完成,我最终在 LibreOffice Calc 中使用了“查找”功能,但开始我想知道如何在 bash 中完成它。理想情况下,数据收集将通过解析 html 实现自动化,但有时您会在 pdf 表格等中获得这些数据集。

任何类型的指针都表示赞赏。谢谢。

4

1 回答 1

0

我猜想,我制作了一个快速而肮脏的 perl 单行脚本,应该根据需要输出。我只花三五分钟。

$ perl -e 'while(<>){my @dt = split(/,/);chomp $dt[1]; my $tmp=`fgrep $dt[0] two.csv`; my @rs = split(/,/,$tmp);chomp $rs[1]; print $dt[0],$dt[1],$rs[1],"\n" }' one.csv 

输出 :

"Algeria" 76 .67
"Angola" 100
"United Arab Emirates" 27

我不处理错误,因此如果一个国家/地区不存在于 second.csv 文件中,它们将仅显示此信息,并且如果一个国家/地区仅存在于 second.csv 中,我也不会得到此信息。

有了这个输出,你应该能够使用 gnuplot 来做你想做的事。或者您可以在 Excel 或 OpenOffice Calc 上打开此文件。

我希望这会有所帮助。

于 2013-04-01T14:18:43.363 回答