我想阅读一个csv文件并只检索几列。 但是,每个像素中的列数非常大(大约100列)
这里的问题是我试着阅读第1,2,3,4,5,60栏等的内容。 我只是想问一下是否有办法跳过RegExp中的第6-59列,所以我可以阅读第60列。
这是我到目前为止对1行的尝试,分号(;)是分隔符
if ($line =~ /^([^;]+);([^;]+);([^;]+);([^;]+);([^;]+);[[^;]+;]{59};([^;]+)/) {
print "$1, $2, $3, $4, $5, $6\n";
}
但代码不起作用。如果有人可以帮我这样做,我将不胜感激。
答案 0 :(得分:1)
您可以使用核心模块Text::ParseWords
例如:
#!/usr/bin/perl
use strict;
use warnings;
use Text::ParseWords;
while (<DATA>) {
my @words = parse_line( ";", 1, $_ );
print join( ":", @words[ 0, 1, 4 ] ), "\n";
}
__DATA__
1;2;"3;4;5";6;7
输出:
1:2:7
在您的特定情况下,将行拆分为数组后,您可以使用@words[0..4]
打印四个元素,或$words[60]
打印第61个元素。