Getting a group of lines from a file
May 19, 2014 · Commentscodetips awkbash
I’ve had this need quite a few times to pull out a section of logs that would begin with a particular line and end with another. grep is not exactly useful there because it only prints out sections based on line counters (using -A/B/C) lines based on a single search pattern.
I came up with a script that can run at almost same speeds using grep/cat/awk
. awk
is used to decide whether the end of the section has been reached or not. Some features of the script are:
Since
awk
script only toggles one variable it works seamlessly without delaying the actual workWorks on gzip files as well
If you do not want to depend on grep or are unsure how many lines may be between begin and end keyword then replace gunzip with zcat and grep with cat.
Usage:
group filename printBeginKeyword printUntilKeyword NumOfLines
Let’s have a look at the script….