请问Linux如何提取特定行数据(提取两个关键词行之间的行)

比如:
chr168
0.5
0.66
0.77
0.3
chr254
0.6
0.3
0.89
chr678
0.658
0.5
chr344
0.53
0.596
0.65
0.68
希望得到chr254到chr678之间的结果
结果如下:
chr254
0.6
0.3
0.89

第1个回答  2016-05-18

追问

十分感谢!顺便问一下如果我想求每个chr下面的平均值该怎么办呢?
结果这样:
chr168 0.5575
chr254 0.5967
chr678 0.579
chr234 0.614

追答

本回答被网友采纳
第2个回答  2016-05-18
cat $file | awk '{if($0~/chr254/){flag=1};if($0~/chr678/){flag=0};if(flag==1){print $0}}'追问

如果我想求每个chr下面的平均值该怎么办呢
结果这样:
chr168 0.5575
chr254 0.5967
chr678 0.579

chr234 0.614

追答

awk '{if($0~/chr/){i=1;j=0;f=$0;p=0;k=0}else{j=1};if(i==1 && j==1){p++;k+=$0;res[f]=k/p;}}END{for(c in res){print c"\t"res[c]}}'

本回答被提问者采纳

Warning: Invalid argument supplied for foreach() in /www/wwwroot/aolonic.com/skin/templets/default/contents.html on line 45
相似回答