rya*_*mer 7 regex csv perl grep
我正在寻找一种方法来读取输入文件,并在Perl中仅将选择行打印到输出文件.我要打印到输出文件的行都以xxxx.xxxx.xxxx,x字母数字字符开头(句点是句点,而不是通配符).如果这会产生影响,那么这些线并不都具有相同的结尾.我正在考虑以下内容(if声明的条件就是我所知道的所有内容).
open(IN, "<$csvfile");
my @LINES = <IN>;
close(IN);
open(OUT, ">$csvnewfile");
print OUT @LINES if ([line starts with xxxx.xxxx.xxxx]);
close(OUT);
Run Code Online (Sandbox Code Playgroud)
提前致谢!
这是循环你的线的更好方法.它可以避免一次将整个输入文件加载到内存中:
use strict;
use warnings;
open my $fhi, '<', $csvfile or die "Can not open file $csvfile: $!";
open my $fho, '>', $csvnewfile or die "Can not open file $csvnewfile: $!";
while (<$fhi>) {
print $fho $_ if m/^ \w{4} \. \w{4} \. \w{4} /x;
}
close $fho;
close $fhi;
Run Code Online (Sandbox Code Playgroud)
请记住,\w字符类还包括下划线.为避免强调:
print $fho $_ if m/^ [a-z\d]{4} \. [a-z\d]{4} \. [a-z\d]{4} /xi;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8272 次 |
| 最近记录: |