How to get lines in between Patterns?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to get lines in between Patterns?
# 8  
Old 04-23-2008
pline itself is variable
# 9  
Old 04-23-2008
pline is a variable.

Edit: heh, posting clash battle of the giants (-:
# 10  
Old 04-23-2008
Hi,

If I tried to print out $pline outside the awk command, its empty.

//racbern
# 11  
Old 04-23-2008
Hi again,

The script doesnt work if the pline is a blank line.

How can I add a validation inside the awk command to check if pline is blank line to get the line above the blank line instead?

Thanks a lot again,

//racbern
# 12  
Old 04-23-2008
Code:
awk '/EXECUTE/ { start = 1; continue }
/END/ { start = 0; continue }
start && /[Ee]rror|failed|warning/ { print pline; print }
/./ { pline = $0 }' file

The dot matches lines which contain a character. If you want a non-blank character, change the dot to something like [^ ]

The awk script handles the whole file in one go; by the time your shell regains control over execution, "pline" will no longer be meaningful.

Generally, to get both output on standard output and a value into a variable from a single child process is extremely tricky. My suggestion would be to make the awk script print its output in such a form that you can then unambiguously identify which lines are "plines" when reading the output back into the shell script. Something like

Code:
awk '... print "pline " pline; print "output " $0 ' ... |
while read type line; do
  case $type in
    pline) echo this is a pline: "$line";;
    output) echo this is real output for that pline: "$line";;
  esac
done

Do you see what I'm getting at? Make awk print a single extra identifier at the start of every line, so your shell script can read that and discard it, but then handle the different types of lines differently depending on what the value of the discarded identifier was.

Last edited by era; 04-23-2008 at 08:37 AM.. Reason: On handling pline outside of awk
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

How to print lines from a files with specific start and end patterns and pick only the last lines?

Hi, I need to print lines which are matching with start pattern "SELECT" and END PATTERN ";" and only select the last "select" statement including the ";" . I have attached sample input file and the desired input should be as: INPUT FORMAT: SELECT ABCD, DEFGH, DFGHJ, JKLMN, AXCVB,... (5 Replies)
Discussion started by: nani2019
5 Replies

2. UNIX for Beginners Questions & Answers

Delete multiple lines between blank lines containing two patterns

Hi all, I'm looking for a way (sed or awk) to delete multiple lines between blank lines containing two patterns ex: user: alpha parameter_1 = 15 parameter_2 = 1 parameter_3 = 0 user: alpha parameter_1 = 15 parameter_2 = 1 parameter_3 = 0 user: alpha parameter_1 = 16... (3 Replies)
Discussion started by: ce9888
3 Replies

3. Shell Programming and Scripting

Search for patterns on different lines

im using the following code to search a log for entries on two different lines: awk 'BEGIN{count=0} /'"${firstpattern}"'/,/'"${secondpattern}"'/ { print; if ($0 ~ /'"${thirdpattern}"'/){count++}; } END { print count }' data.txt firstpattern="start error log" secondpattern="i am logging the... (1 Reply)
Discussion started by: SkySmart
1 Replies

4. Shell Programming and Scripting

Extract lines between patterns

I have a list in the format below, how do I read through the list and extract the lines between the ##START## and ##END##, so i can check for specific values between each ##START## & ##END## pattern ##START## RANDOMTEXT DFGSD SDFSDF ##END## ##START## morestuff sdfggfg sdfsdf... (10 Replies)
Discussion started by: squrcles
10 Replies

5. Shell Programming and Scripting

How to print only lines in between patterns?

Hi, I want to print only lines (green-italic lines) in between first and last strings in column 9. there are different number of lines between each strings. 10 AUGUSTUS exon 4558 4669 . - . 10.g1 10 AUGUSTUS exon 8771 8889 . ... (6 Replies)
Discussion started by: jamo
6 Replies

6. Shell Programming and Scripting

Need to print between patterns AND a few lines before

I need to print out sections (varying numbers of lines) of a file between patterns. That alone is easy enough: sed -n '/START/,/STOP/' I also need the 3 lines BEFORE the start pattern. That alone is easy enough: grep -B3 START But I can't seem to combine the two so that I get everything between the... (2 Replies)
Discussion started by: Finja
2 Replies

7. Shell Programming and Scripting

Deleting lines above the patterns

I want to delete 1 line above the paatern and 3 line below the pattern and the pattern line itself, on the whole 5 lines. If there are three patterns what to do and the final text file to be captured in a new file. (3 Replies)
Discussion started by: razen
3 Replies

8. Shell Programming and Scripting

How can I get the lines between two patterns?

hi, I have the following file hello world this is to say bye to everyone so bye I want to get the lines from hello to the first bye inclusive into another file? how can I do this (11 Replies)
Discussion started by: JamesByars
11 Replies

9. Shell Programming and Scripting

Searching patterns in 1 file and deleting all lines with those patterns in 2nd file

Hi Gurus, I have a file say for ex. file1 which has 3500 lines in it which are different account numbers and another file (file2) which has 230000 lines in it. I want to read all the lines in file1 and delete all those lines from file2 which has that same pattern as in file1. I am not quite... (4 Replies)
Discussion started by: toms
4 Replies

10. Shell Programming and Scripting

Grep All lines between 2 different patterns

I need a simple script to get all lines between 2 Patterns, e.g. ............. ............. 114456723: testing Script Alpha Beta 114459234: testing Done ............. ............. It should give all the lines in between 114456723 and 114459234, including these as well. Any... (2 Replies)
Discussion started by: gurpreet470
2 Replies
Login or Register to Ask a Question