免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4869 | 回复: 6
打印 上一主题 下一主题

用perl命令行提取指定行到指定位置,其他默认输出 [复制链接]

论坛徽章:
1
子鼠
日期:2013-12-02 22:34:22
1 [报告]
发表于 2012-12-03 22:02 |显示全部楼层
回复 1# kernel69
$curpos=tell DATA;
@push=grep {/O\s[53]\b/} <DATA>;
seek(DATA,$curpos,0);
while (<DATA>)
{
   print ,next if /LTO/../Direct/;
   print @push;
   print;
   last;
}




while(<DATA>)

  print if !/O\s[53]\b/;
}




__DATA__
LTO-112                                 
   1.00000000000000     
     7.7228425617038052   -1.1728241973308142    0.0000783765917769
     0.0154894469072108   13.1856961357670865    0.0030255004255562
     0.0005099584114049    0.0025575613443815   11.1620206915956075
   N    O    Ti   La
     2    54    16    16
Direct
  0.7774215004064313  0.1115183520588823  0.3975691032523719  !   O 1
  0.7771581464215501  0.1089297591197067  0.9024626546976567  !   O 2  
  0.2724167356846352  0.0892053653452632  0.3395504485160841  !   O 3  
  0.2730739211704762  0.0920101685285890  0.8424744814611309  !   O 4  
  0.0375063320525867  0.0189181619988713  0.0113650832426271  !   O 5  
  0.0365639745275992  0.0190801381676232  0.5117751570324968  !   O 6  
  0.4726361611294826  0.0208567905544868  0.0114666074551770  !   O 7  
  0.4740039724211500  0.0212090000784555  0.5117259506938966  !   O 8  
  0.1102180912358619  0.2287966682670296  0.4808739940375588  !   O 9  
  0.1082787292444457  0.2277465339852076  0.9808863659422654  !   O 10 
  0.5047713377152230  0.2322004469818953  0.4780386588074450  !   O 11 
  0.5059567860449274  0.2308850118864839  0.9778788455825969  !   O 12 
  0.0306657407452050  0.1855576162473936  0.2249739665642037  !   O 13 
  0.0286688753220992  0.1850095370859427  0.7261973101857051  !   O 14 
  0.5607981933228251  0.1842478667545847  0.2227362284969601  !   O 15 
  0.5628436290100254  0.1835949663173362  0.7241398630945840  !   O 16 
  0.0844940391742547  0.4075450250314948  0.2786555919397753  !   O 17 
  0.0847144095905826  0.4075106445105974  0.7788453294753575  !   O 18 
  0.6183352817388390  0.3960686664334347  0.2872963146044206  !   O 19 
  0.6182086687431423  0.3958656917719918  0.7875423740163315  !   O 20 
  0.1233091378066253  0.4304550605450148  0.0371544327048564  !   O 21 
  0.1231592688039196  0.4307100191731379  0.5376665959498181  !   O 22 
  0.5958927121806848  0.4398154592128560  0.0427595519777654  !   O 23 
  0.5961285549301263  0.4400608080615391  0.5433837235740554  !   O 24 
  0.3278880279280379  0.3088022264155676  0.1671011844098544  !   O 25 
  0.3279347411765126  0.3086165081646174  0.6678438914641215  !   O 26 
  0.8262572705420765  0.3052066878686089  0.1064335068510608  !   O 27 
  0.8263419867565519  0.3053722289679932  0.6070010296661088  !   O 28 
  0.2227088528521967  0.8903249303209398  0.1519725028946477  !   O 29 
  0.2228805336352401  0.8910382005582520  0.6525961852954097  !   O 30 
  0.7270069998272813  0.9081857062726386  0.0917546085589852  !   O 31 
  0.7268034839149164  0.9074318918717618  0.5919982177966845  !   O 32 
  0.9630604679600919  0.9795980675156690  0.2612526320192473  !   O 33 
  0.9630912707186527  0.9804995968322487  0.7614574501246922  !   O 34 
  0.5261765035865646  0.9777158543488299  0.2613113026519991  !   O 35 
  0.5264236150187530  0.9785116440802124  0.7615566146330760  !   O 36 
  0.8913617615404948  0.7721820384388214  0.2308060240528116  !   O 37 
  0.8917143507518773  0.7722919070249790  0.7309905232859238  !   O 38 
  0.4944035362630213  0.7692207011350506  0.2279691408755182  !   O 39 
  0.4939941797077887  0.7691937702572762  0.7280706376784744  !   O 40 
  0.9720727911364467  0.8147475329909236  0.4759195937277313  !   O 41 
  0.9721156212703318  0.8150197319692353  0.9756499236771080  !   O 42 
  0.4364168709255045  0.8161601108620860  0.4738892374363887  !   O 43 
  0.4364562481569679  0.8164184671426239  0.9735825791979374  !   O 44 
  0.9155102422319800  0.5926856736553917  0.0288332502914128  !   O 45 
  0.9154979783730705  0.5926300829865471  0.5289578428877402  !   O 46 
  0.3817522880864018  0.6043857651787646  0.0376318901566861  !   O 47 
  0.3817160543137474  0.6042374780435397  0.5376893080969934  !   O 48 
  0.8769420718502774  0.5697560417825575  0.2875855124316236  !   O 49 
  0.8768979398345339  0.5697431069870185  0.7874643113843084  !   O 50
很笨的办法。
   

论坛徽章:
1
子鼠
日期:2013-12-02 22:34:22
2 [报告]
发表于 2012-12-05 13:26 |显示全部楼层
回复 4# q1208c
也可以写成变量来获取参数。不过数据量很大的话这样处理有点罗嗦,看各位有没更好的办法。

   

论坛徽章:
1
子鼠
日期:2013-12-02 22:34:22
3 [报告]
发表于 2012-12-05 22:28 |显示全部楼层
回复 6# sjdy521
有更简便的方法没


   

论坛徽章:
1
子鼠
日期:2013-12-02 22:34:22
4 [报告]
发表于 2012-12-08 23:55 |显示全部楼层
回复 10# 飞越地平线
..这个是范围操作符,LTO..Direct的内容直接打印。
可以看看文档或论坛里其他人写的东西

   

论坛徽章:
1
子鼠
日期:2013-12-02 22:34:22
5 [报告]
发表于 2012-12-10 09:48 |显示全部楼层
回复 12# 飞越地平线
perldoc perlop.
这些基础知识的话,可以找书看看。

   

论坛徽章:
1
子鼠
日期:2013-12-02 22:34:22
6 [报告]
发表于 2012-12-10 20:03 |显示全部楼层
回复 16# 飞越地平线
..借鉴了linux下awk的范围操作符用法,还有...借鉴了sed的用法.一个是本次操作就会测试右操作数,一个是下次才会测试右操作数。论坛里也有人聊过这个,可以看看。

   

论坛徽章:
1
子鼠
日期:2013-12-02 22:34:22
7 [报告]
发表于 2012-12-11 18:16 |显示全部楼层
回复 18# 飞越地平线
哦。呵呵
   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP