利用perl 如何抽取 input.txt 部分内容,排列成output.txt中这样形式
时间:2011-07-23
来源:互联网
本帖最后由 weichanghe2000 于 2011-07-23 01:10 编辑
input.txt 内容如下:
复制代码
output.txt 内容如下:
复制代码
我的问题是想请教大家:利用perl 如何抽取 input.txt 中部分内容,并输出到output.txt,排列成output.txt中这样形式。
input.txt 内容如下:
- ID=1 IX=-1 IY=-1
- Kuan=1 Chang=0.1 Tem=20
- Begin to generate date:
-
- Vb=0
- X=x11, x12
- Y=y11, y12
- Z=z11, z12
-
- Vb=0.4
- X=x21, x22
- Y=y21, y22
- Z=z21, z22
-
- Vb=1
- X=x31, x32
- Y=y31, y32
- Z=z31, z32
- K=k31, k32
- ******************
-
- ID=1 IX=2 IY=3
- Kuan=2 Chang=0.5 Tem=20
- Begin to generate date:
-
- Vb=0
- X=x41, x42
- Y=y41, y42
- Z=z41, z42
-
- Vb=0.4
- X=x51, x52
- Y=y51, y52
- Z=z51, z52
-
- Vb=1
- X=x61, x62
- Y=y61, y62
- Z=z61, z62
- K=k61, k62
- ******************
- 后面 还有很多段这样的
- ID Kuan Chang Tem IX IY Vb X1 X2 Y1 Y2 Z1 Z2 K1 K2
- 1 1 0.1 20 -1 -1 0 x11 x12 y11 y12 z11 z12 null null
- 1 1 0.1 20 -1 -1 0.4 x21 x22 y21 y22 z21 z22 null null
- 1 1 0.1 20 -1 -1 1 x31 x32 y31 y32 z31 z32 k31 k32
- 1 2 0.5 20 2 3 0 x41 x42 y41 y42 z41 z42 null null
- 1 2 0.5 20 2 3 0.4 x51 x52 y51 y52 z51 z52 null null
- 1 2 0.5 20 2 3 1 x61 x62 y61 y62 z61 z62 k31 k32
- ……………
- ……………
- ……………
作者: weichanghe2000 发布时间: 2011-07-23
本帖最后由 yinyuemi 于 2011-07-23 05:32 编辑
回复 weichanghe2000
复制代码
回复 weichanghe2000
- #!/bin/perl
- use strict;
- my @title=qw(ID Kuan Chang Tem IX IY Vb X1 X2 Y1 Y2 Z1 Z2 K1 K2);
- my %value;
- my ($line,$label,$tmp);
-
- while (<DATA>){
- chomp;
- my ($a,$b)=(1,2);
- s/(\w+)=(\w+), (\w+)/$1$a=$2 $1$b=$3/;
- if(/^ID/){$label=0;$tmp="";}
- if(/Vb/){$label=1;$line++;}
- if($label eq 0){
- while (m,(\w+)=([^\s]+)\s?,g){
- $value{$1}=$2;
- }
- }elsif($label eq 1){
- for(0..5){$tmp.=$value{$title[$_]}."\t";}
- while (m,(\w+)=([^\s]+)\s?,g){
- $value{$1}{$line}=$tmp.$2;
- $label++;
- }
- }else{
- while (m,(\w+)=([^\s]+)\s?,g){
- $value{$1}{$line}=$2;
- $tmp="";
- }
- }
- }
-
- print join "\t",@title,"\n";
- for my $m (1..$line){
- for my $n (6..$#title){
- print $value{$title[$n]}{$m}||"NULL","\t";
- }
- print "\n";
- }
-
-
- __DATA__
- ID=1 IX=-1 IY=-1
- Kuan=1 Chang=0.1 Tem=20
- Begin to generate date:
-
- Vb=0
- X=x11, x12
- Y=y11, y12
- Z=z11, z12
-
- Vb=0.4
- X=x21, x22
- Y=y21, y22
- Z=z21, z22
-
- Vb=1
- X=x31, x32
- Y=y31, y32
- Z=z31, z32
- K=k31, k32
-
- ****************
- ID=1 IX=2 IY=3
- Kuan=2 Chang=0.5 Tem=20
- Begin to generate date:
-
- Vb=0
- X=x41, x42
- Y=y41, y42
- Z=z41, z42
-
- Vb=0.4
- X=x51, x52
- Y=y51, y52
- Z=z51, z52
-
- Vb=1
- X=x61, x62
- Y=y61, y62
- Z=z61, z62
- K=k61, k62
作者: yinyuemi 发布时间: 2011-07-23
太牛了 !楼上的 。
作者: qq64878641 发布时间: 2011-07-23
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28