加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl – 根据某列排序CSV?

发布时间:2020-12-15 21:15:43 所属栏目:大数据 来源:网络整理
导读:我确信我过去已经这样做过了,我忘记了一些小问题,但是如何在某个列上对CSV文件进行排序呢?我对有和没有第三方Perl模块的答案感兴趣.主要方法没有,因为我并不总是有权安装额外的模块. 示例数据: name,25,femalename,24,malename,27,21,male 在第二个数字列
我确信我过去已经这样做过了,我忘记了一些小问题,但是如何在某个列上对CSV文件进行排序呢?我对有和没有第三方Perl模块的答案感兴趣.主要方法没有,因为我并不总是有权安装额外的模块.

示例数据:

name,25,female
name,24,male
name,27,21,male

在第二个数字列上排序后所需的最终结果:

name,female

解决方法

由于CSV是一种非常复杂的格式,因此最好使用为我们工作的模块.

以下是使用Text::CSV模块的示例:

#!/usr/bin/env perl

use strict;
use warnings;

use constant AGE => 1;

use Text::CSV;

my $csv = Text::CSV->new();

my @rows;
while ( my $row_ref = $csv->getline( *DATA ) ) {
    push @rows,$row_ref;
}

@rows = sort { $a->[AGE] <=> $b->[AGE] } @rows;

for my $row_ref (@rows) {
    $csv->combine(@$row_ref);
    print $csv->string(),"n";
}

__DATA__
name,male

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读