Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number
 
PerlMonks  

Re: How to print the lines immediately above and below a matching line?

by space_monk (Chaplain)
on Nov 25, 2012 at 16:29 UTC ( #1005504=note: print w/ replies, xml ) Need Help??


in reply to How to print the lines immediately above and below a matching line?

TMTOWTDI answer. :-)

Instead of reading the file line by line as suggested in other answers above, you could also read the entire file into a scalar and use a multi line regexp to do it. Look up use of the /m option on regexp matching.

Any Monk who wishes to extend this thread with a complete answer using this method is more than welcome to do so (I'm a bit short of time)

A Monk aims to give answers to those who have none, and to learn from those who know more.


Comment on Re: How to print the lines immediately above and below a matching line?
Re^2: How to print the lines immediately above and below a matching line?
by Anonymous Monk on Nov 25, 2012 at 16:33 UTC
    If at ever there will need to be printed most at then some three lines, read the whole file is waste of memory

      Waste of memory? Memory is there to be used ... what are you saving it for?

      Sure, for a long-lived application may want to be leery of using a large quantity of ram. But if it solves the immediate problem at hand, then using memory isn't really a problem. Also, memory is so large anymore that you need to work with *big* files if you're going to make memory usage a problem. The ordinary file isn't really going to be a problem.

      For example, here's a histogram of file sizes on a couple of my machines--my work laptop (LT0186) and my goofing off computer (Boink):

      files smallar thanLT0186Boink
      1 2852 122103
      10 701 5777
      25 3920 30988
      50 7793 31843
      100 4501 41932
      250 10112 128614
      500 14385 119923
      1k 31564 192614
      2.5k 40133 275173
      5k 33471 218245
      10k 34710 233223
      25k 27628 211316
      50k 14394 100595
      100k 12579 71556
      250k 9674 61003
      500k 4961 22754
      1M 3508 13800
      2.5M 2013 8325
      5M 852 4279
      10M 738 4586
      25M 365 1958
      50M 223 634
      100M 54 372
      250M 52 129
      500M 22 63
      1G 16 55
      2.5G 9 32
      5G 0 3
      10G 0 1

      I wouldn't take a second thought about just loading a file under 500M into RAM, and as you can see, I have *very few* files larger than that. And for a simple task like the one presented, I'd probably go ahead and try it on larger files (swap space permitting) and go take a break.

      ...roboticus

      When your only tool is a hammer, all problems look like your thumb.

        Waste of memory? Memory is there to be used ... what are you saving it for?

        seriously? This entire "program" is a joke -- grep does it already

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1005504]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (13)
As of 2014-09-18 17:19 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    How do you remember the number of days in each month?











    Results (120 votes), past polls