按MAC地址排序



我有一个由设备信息组成的长.csv文件。每条线路都是一个独特的设备,其信息如下所示:

MACaddr,,,,Date,Date,,"b,n",,blahblahblah

我需要做的是接收文件,然后将具有相同供应商MAC(即MAC地址的前3个八位字节)的所有线路/设备分组到一个新文件中。我可以很容易地接收每一行,并用正则表达式获取供应商MAC,但后来我就卡住了。

我只有:

#!usr/bin/perl
use strict;
use warnings;
open IN, "wirelessClients.csv" or die "Couldn't open filen$!";
open OUT, ">sortedClients.csv" or die "Couldn't open out filen$!";
my @clients = <IN>;
foreach my $client (@clients)
{
    if($client =~ /^(w+:w+:w+)/)
    {
        print OUT "$1,$clientnn"; 
    }
}

我不知道如何对信息进行分类。

如有任何帮助和/或指导,我们将不胜感激!

如果MAC地址是第一个元素,则简单排序应将具有相同前3个八位字节的元素分组:

sort wirelessClients.csv > sortedClients.csv

当我们看到第一个八位字节时,您可以简单地对进行数字排序字母数字排序:

#!/usr/bin/perl
use strict;
use warnings;

open (my $in, '<', "wirelessClients.csv") or die "Cannot open Infile: $!";
open (my $out, '>',"sortedClients.csv") or die "Cannot open Outfile: $!";
my @clients = <$in>;
my @sorted = sort {$a cmp $b} @clients;
foreach @sorted {
    print $out $_;
}

最新更新