perl取文本中一部分数据
hehe.comAdministrativeContact:Domains,OIoidomains@gmail.comPOBoxHM2900Hamilton,Hamilt...
hehe.com
Administrative Contact:
Domains, OI oidomains@gmail.com
PO Box HM2900
Hamilton, Hamilton HMLX
BM
01962843453
Technical Contact:
Domains, OI oidomains@gmail.com
PO Box HM2900
Hamilton, Hamilton HMLX
BM
01962843453
文件是上面这样的,当然这也是整个文件中的一段,我的目的:
1、当匹配到Administrative Contact:的时候输出Administrative Contact:和Technical Contact:之间的那5行
2、当然这5行不是固定的可能是N行,特点就是以空格开头
3、目的就是输出Administrative Contact:下面以空格开头的行直到出现以字符开头的行停止。
我是先定义上述内容为数组@a
用for循环 for($i=0;$i<@a;i++){
next unless $a[$i]=~ /Administrative Contact/;
print $a[$i];
last if $a[$i] =~ /^\s*Technical/;
} 这样为什么不行?应该怎么写? 最好就用for循环表示出来谢谢了 展开
Administrative Contact:
Domains, OI oidomains@gmail.com
PO Box HM2900
Hamilton, Hamilton HMLX
BM
01962843453
Technical Contact:
Domains, OI oidomains@gmail.com
PO Box HM2900
Hamilton, Hamilton HMLX
BM
01962843453
文件是上面这样的,当然这也是整个文件中的一段,我的目的:
1、当匹配到Administrative Contact:的时候输出Administrative Contact:和Technical Contact:之间的那5行
2、当然这5行不是固定的可能是N行,特点就是以空格开头
3、目的就是输出Administrative Contact:下面以空格开头的行直到出现以字符开头的行停止。
我是先定义上述内容为数组@a
用for循环 for($i=0;$i<@a;i++){
next unless $a[$i]=~ /Administrative Contact/;
print $a[$i];
last if $a[$i] =~ /^\s*Technical/;
} 这样为什么不行?应该怎么写? 最好就用for循环表示出来谢谢了 展开
1个回答
展开全部
open F, "F:/1.txt"; #1.txt是你画面上那个文件
@array=<F>;
$count=-1;
foreach (@array){
$count++;
if(/Administrative Contact:/){$start=$count+1;}#记录开始行数号
if(/Technical Contact:/){$end=$count-1; }}#记录结束行数号
for ($start..$end) { #两个行数相减就是你要的东西
print "$array[$_]\n";}
或者按照你的方法:
open F, "F:/1.txt"; #1.txt是你画面上那个文件
@a=<F>;
for($i=0;$i<@a;$i++){
if($a[$i]=~/^\s+/){print $a[$i];}
last if $a[$i] =~ /^\s*Technical/;}
#用一个last就行了,遇到Technical这个单词,循环退出
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询