【问题标题】:Parse Column information from CSV basics从 CSV 基础解析列信息
【发布时间】:2012-06-05 09:15:48
【问题描述】:

我有一个以下格式的 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 ) )

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

我改用以下代码:

open(IN, "LogFile1.csv");

while() { ... }

while {} 中,我确实输入了删除重复行并转换为 URL 的代码。它解析来自 csv 文件的所有信息。我试图删除除 B 列之外的所有列,并且代码在转换 URL 时完美工作。这意味着当有 3 列信息时,将 IP 转换为 URL 失败。

【问题讨论】:

  • 发布您尝试过的代码,我们会提供帮助。

标签: perl


【解决方案1】:

如果是 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;

【讨论】:

    【解决方案2】:

    你可以这样做:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-14
      相关资源
      最近更新 更多