从CSV基础解析列信息

时间:2010-12-23 09:25:06

标签: perl

我有以下格式的csv文件(在excel中打开) 例如:

Column A      Column B    Column C

192.168.1.100 172.16.16.1  WWW
192.168.1.100 172.16.16.2  abc
192.168.1.100 172.16.16.3  def

我正在编写一个Perl程序,它将从B列获取信息,并将其转换为URL。

我尝试了很多方法,例如split,但是我无法使用它们。


my $file = 'file.csv';

my $csv = Text::CSV->new(); while ( my $row = $csv->getline( $fh ) )

当我在Google上搜索代码时。上面的代码与我之前使用的代码类似,但最终给出了一些我无法解决的错误。

我改为使用以下代码:

open(IN, "LogFile1.csv");

while() { ... }

while {}内,我输入了删除重复行并转换为URL的代码。它解析csv文件中的所有信息。我试图删除除B列以外的所有列,并且代码在转换URL时非常有效。当有3列信息时,将IP转换为URL失败。

2 个答案:

答案 0 :(得分:2)

如果是CSV文件,您可以使用Text::CSV解析数据。类似的东西:

#!/usr/bin/perl
use strict;
use warnings;
use Text::CSV;

my $file = 'file.csv';

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

open my $fh, "<", $file or die $!;

while ( my $row = $csv->getline( $fh ) ) {
  print 'http://' . $row->[1] . "\n";
}

close $fh;

答案 1 :(得分:1)

你可以这样做:

perl -ane '@F == 3 && print "http://$F[1]\n"' file.txt