perl - 我们如何使用 perl 对第 1 列和第 2 列用户数据进行排序

标签 perl

我是 perl 编程的新手。 我想读取文件数据,然后对第 1 列的记录进行排序,然后对第 2 列的记录进行排序(删除重复记录)并将排序后的记录存储到另一个文件中。以下是我的数据

第一列和第二列用制表符分隔

 user1 name       user2 name

    abc               xyz
    adc               xyz
    abc               xyz
    pqr               tyu
    xyz               abc
    tyu               pqr
    abc               pqr

在这个例子中,我想先对 user1 名称的记录进行排序,然后对 user2 名称进行排序,并且在排序时我想删除重复的记录。

输出应该如下

user1 name        user2 name
  abc              pqr
  abc              xyz
  adc              xyz
  pqr              tyu
  tyu              pqr
  xyz              abc

请告诉我如何实现这个 perl?

最佳答案

#!/usr/bin/env perl
use strict;
use warnings;
my @list = <DATA>;
my $prev;
for (sort @list) {
    next if $prev && $_ eq $prev;
    $prev = $_;
    print;
}
__DATA__
    abc               xyz
    adc               xyz
    abc               xyz
    pqr               tyu
    xyz               abc
    tyu               pqr
    abc               pqr

关于perl - 我们如何使用 perl 对第 1 列和第 2 列用户数据进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8420279/

相关文章:

perl - 如何使用 Perl 脚本将 Gmail 中的邮件标记为 'read' 并使用 Mail::Webmail::Gmail 删除它们?

windows - perl 优先于 glob @argv

linux - 使用模式拆分文件并使用包含此模式的字符串命名每个结果文件 (perl)

mysql - 加速 perl DBI fetchrow_hashref

perl - 打开 STDIN/STDOUT 如何正确处理和使用 utf8 编码?

Perl Exporter 在子类中使用来自@EXPORT_OK 的变量

perl - 我应该保持文件打开还是应该经常打开和关闭?

perl - Perl 中的 "CGI::param called in list context"警告

perl - 为什么通常在没有线程支持的情况下安装Perl?

perl - PDF::API2 是否支持使用压缩的外部参照读取 PDF 1.5+?