- 论坛徽章:
- 1
|
我有一个包含几万行的log1文件,部分内容如下:
.......................
2015-7-6 15:30:06 BS7546152075910633343435A
2015-7-6 15:30:08 CAB753715207511043333333326
.......................
2015-7-6 15:30:16 CAB754615207511043333333321
.......................
2015-7-6 15:31:20 BS7538152075910633343435B
.......................
2015-7-6 15:31:31 CS7538152075110433333333B8
.......................
这些内容之间还包括了很多行
如果要打印出包含字符串"75(\d{6})75910633343435"的行和包含$1的行并保存到log2文件中,如这部分内容我要得到的行是:
2015-7-6 15:30:06 BS7546152075910633343435A
2015-7-6 15:30:16 CB754615207511043333333321
2015-7-6 15:31:20 BS7538152075910633343435B
2015-7-6 15:31:31 CS7538152075110433333333B8
用perl脚本怎么实现呢?
我刚开始是想着一步一步来,先实现打印出$1,程序如下:
use strict;
open(MYFILE,"E:/log1.txt") or die("Can't open log1.txt");
$/ = undef;
while(my $values1 = <MYFILE>){
if($values1 =~ /75(\d{6})75910633343435/){
print $1;
}
}
close MYFILE;
但得到的只有一个值:461520,我本来想得到的结果是
461520
381520
因为还在初学阶段,我是想着一步一步来,先实现打印出$1,再实现包含$1的行,不过研究了很久第一步还没有实现。小妹是初学perl,请大家多多指教,谢谢!
|
|