亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: perl文本處理,大家?guī)兔纯?[打印本頁]

作者: 南宮慕容007    時間: 2016-05-03 10:55
標(biāo)題: perl文本處理,大家?guī)兔纯?br /> 本帖最后由 南宮慕容007 于 2016-05-03 15:42 編輯


在一個文件里有很多類似于上面文本格式的文本,都是按一定順序排好的。我想檢查每一段是否包含0 4700000 sil -2540.468994 !SENT_START和36100000 36600000 sil -249.693359 !SENT_START這樣的兩句話(這兩句話在每一段文本的第二句和和倒數(shù)第二句,最后一句十個句號占一行),且這兩句話都要滿足第二個數(shù)字減第一個數(shù)字大于400000,如果不滿足其中的任一條件,則將這一段文本的第一句打印出來,也就是打印"chengwenqiang_near_013_stn2.rec"這句話?赡苡悬c難理解,我想了好久了還是沒找到解決辦法。一行一行的讀取文本好像很難解決這個問題吧。


作者: gaoquanlong    時間: 2016-05-03 17:28
  1. #!/usr/bin/perl
  2. #use warning;

  3. $/ = '..........';
  4. my (@block, $a, $b, $c,$d,$e,$flag);
  5. while (<DATA>) {
  6.   @block = split /\r|\n/,$_;
  7.   
  8.    
  9.   $a = ($block[0] =~ /^\s*$/)?$block[1]:$block[0];
  10.   $b = ($block[0] =~ /^\s*$/)?$block[2]:$block[1];
  11.   $c = $block[$#block - 1];
  12.   
  13.   if ( not ( ((split /\s+/,$b)[1] - (split /\s+/,$b)[0] > 400000) && ((split /\s+/,$c)[1] - (split /\s+/,$c)[0] > 400000) ) ) {
  14.     print $a,"\n";
  15.   }
  16. }


  17. __DATA__
  18. "abc.txt"
  19. 0 4700000 sil -2540.468994 !SENT_START
  20. dfdfdfdf
  21. dfdfd
  22. ffff
  23. ffdfdf
  24. dddddd
  25. 36100000 36600000 sil -249.693359 !SENT_START
  26. ..........
  27. "bcd.txt"
  28. 0 470000 sil -2540.468994 !SENT_START
  29. dfdfdfdf
  30. dfdfd
  31. ffff
  32. ffdfdf
  33. dddddd
  34. 36100000 36600000 sil -249.693359 !SENT_START
  35. ..........
  36. "cde.txt"
  37. 0 4700000 sil -2540.468994 !SENT_START
  38. dfdfdfdf
  39. dfdfd
  40. ffff
  41. ffdfdf
  42. dddddd
  43. 36100000 3660 sil -249.693359 !SENT_START
  44. ..........
復(fù)制代碼

作者: 南宮慕容007    時間: 2016-05-03 23:30
@block = split /\r|\n/,$_;這一句是把整個文件都放到一個數(shù)組中了嗎回復(fù) 2# gaoquanlong


   




歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2