perl – 循环 – 提取文本以进行记录,直到下一条记录

前端之家收集整理的这篇文章主要介绍了perl – 循环 – 提取文本以进行记录,直到下一条记录前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的虚拟文件如下所示:

>Tom
  text
  text text,year = 16 
  text 
  text
  text
  Grades . . . . 10
  Grades . . . . 9
  >Ann  
  text
  text text,year = 17 
  text 
  Grades . . . . 10
  Grades . . . . 10
  Grades . . . . 9

我想要:
对于每个名称赋值,提取年份和年份等级行中的最后一个数字.
对于像这样的输出

1 Tom 
  1 year = 16
  1 10
  1 9 
  2 Ann
  2 year = 17
  2 10
  2 10
  2 9

我不知道如何从记录到下一条记录修改文本.有可能grep’^>’ -An,但每个记录的行号不同.

解决方法

假设你的真实文件中没有前导空格,这是使用awk的一种方式:

awk 'sub(/^>/,"") { print ++i,$0 } /Grades/ { print i,$NF } /year =/ { print i,"year = ",$NF }' file

结果:

1 Tom
1 year =  16
1 10
1 9
2 Ann  
2 year =  17
2 10
2 10
2 9

猜你在找的Perl相关文章