Grepping multiple terms with different arguments


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Grepping multiple terms with different arguments
# 1  
Old 06-12-2009
[SOLVED] Grepping multiple terms with different arguments

Code:
Grep -e 'term1' -A1 -e 'term2' -A3

The above code always searches for either term and prints results + next three lines.

I'm trying to print out:

foo foo foo term1 bar bar bar
line right after the above
--
la la la la term2 so so so
line right after the above
and again
and again

I've tried grep because I'm most familiar with it. Any solution is fine. Bash environment. Perl if necessary but a grep/awk/sed/other cli command preferred (want to learn the above)

Many thanks!
dkozel

Last edited by dkozel; 06-12-2009 at 03:28 PM..
# 2  
Old 06-12-2009
Code:
nawk '/term1|term2/ {c=4}c&&c--' myFile

# 3  
Old 06-12-2009
vgersh99: Thanks for the quick reply.

*sigh* I have access to awk and gawk on this computer. Unfortunately I'm working on a system I can't install software on so nawk isn't an option. I'll try that out when I get to my own system.

I tried just ^nawk^gawk but that didn't work.
*** glibc detected *** gawk: free(): invalid pointer: 0x000000000066bfe0 ***

I don't know if that's an issue with our gawk or a syntax error (you would think that would be handled better...)

If there are more ideas wonderful, if not, I'll try nawk on when I get a chance.

Thanks again.

Last edited by dkozel; 06-12-2009 at 03:20 PM.. Reason: Spelling error
# 4  
Old 06-12-2009
Quote:
Originally Posted by dkozel
vgersh99: Thanks for the quick reply.

*sigh* I have access to awk and gawk on this computer. Unfortunately I'm working on a system I can't install software on so nawk isn't an option. I'll try that out when I get to my own system.

I tried just ^nawk^gawk but that didn't look.
*** glibc detected *** gawk: free(): invalid pointer: 0x000000000066bfe0 ***

I don't know if that's an issue with our gawk or a syntax error (you would think that would be handled better...)

If there are more ideas wonderful, if not, I'll try nawk on when I get a chance.

Thanks again.
that's sounds like a gawk installation issue.
try 'awk' instead.
# 5  
Old 06-12-2009
awk ran. *head smack* Should have tried that.

The result isn't as required however. The awk statement is equivalent to
Code:
dkozel $ grep "term1\|term2" -A3 testfile

the problem is that I would like to print a different number of lines following each search term.

Code:
dkozel $ awk '/term1|term2/ {c=4}c&&c--' testfile
term1
1
2
3
term2
1
2
3

testfile
Code:
term1
1
2
3
4
5
6
term2
1
2
3
4
5
6

Desired output
Code:
term1
1
term2
1
2
3

# 6  
Old 06-12-2009
Your 'desired' output is equivalent to to your grep.
Code:
awk '/term1|term2/ {c=(/term1/)?2:4}c&&c--'

# 7  
Old 06-12-2009
Thank you. That works.

My apologies for likely being unclear. My initial grep statement and your first awk statement had the same output, lines containing search terms and the following three lines. It was the different number of following lines for each term that I was unable to figure out.

For other's references this can be extended to n search terms.

Code:
awk '/term1|term2|term3/ {c=(/term1/)?2:(/term2/)?3:4}c&&c--' testfile

The above will print term1 and the following 1 lines ( two lines total ), term2 and the following 2 lines (three lines total ), and term 3 and the following 3 lines ( four lines total).
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Grepping multiple strings from one column

I have 3-column tab separated data that looks like the following: act of+n-a-large+vn-tell-v 0.067427 act_com of+n+n-a-large-manufacturer-n 0.129922 act-act_com-com in+n-j+vn-pass-aux-restate-v 0.364499666667 com nmod+n-j+ns-invader-n 0.527521 act_com-com obj+n-a-j+vd-contribute-v 0.091413... (2 Replies)
Discussion started by: owwow14
2 Replies

2. Shell Programming and Scripting

Grepping multiple lines in a file

HI I have a file with output as System: cu=4 ent=0.1 mode=on cu min u s w i 0 500 0.1 0.3 0.5 0.1 1 200 0.5 0.2 0.3 0.0 I need to grep the values of following column fields u, s, w and i from each row sum them up and store in a variable..:( Please help.. (3 Replies)
Discussion started by: Priya Amaresh
3 Replies

3. Shell Programming and Scripting

Grep multiple terms and output to individual files

Hi all, I'll like to search a list of tems in a huge file and then output each of the terms to individual files. I know I can use grep -f list main.file to search them but how can I split the output into individual files? Thank you. (6 Replies)
Discussion started by: ivpz
6 Replies

4. Programming

Grepping a column from multiple file

I have 20 files that look pretty much like this: 0.01 1 3822 4.97379915032e-14 4.96982253992e-09 0 0.01 3822 1 4.97379915032e-14 4.96982253992e-09 0 0.01 2 502 0.00993165137406 993.165137406 0 0.01 502 2 0.00993165137406 993.165137406 0 0.01 4 33 0.00189645523539 189.645523539 0 0.01 33 4... (5 Replies)
Discussion started by: kayak
5 Replies

5. Shell Programming and Scripting

Grep multiple search terms with context

I have a file that is a sort library in the format: ##def title1 content1 stuff1 content2 stuff2 ##enddef ##def title2 etc.. I want to grep def and content and pull some trailing context from content so the result would look something like: (1 Reply)
Discussion started by: Moe.Wilensky
1 Replies

6. Shell Programming and Scripting

grepping multiple matches in a single string

Hi All, I'm trying to grep for 3 patterns in a string of gibberish. It so happens that each line is appended by a date/time stamp and i was able to figure out how to extract only the datetime. here is the string.. i have to display tinker tailor soldier spy Please can some help... (2 Replies)
Discussion started by: Irishboy24
2 Replies

7. UNIX for Dummies Questions & Answers

Problems Grepping within multiple Quotes

Hello, I have a block of code (XML) that I would like to grep for certain information. The basic format of the XML is the following repeated a few hundred times, each time with a unique ID: <Identifier ID="A" NAME="John Doe" AGE="32 Years" FAMILY="4" SEX="MALE"></Identfier> I would like to... (6 Replies)
Discussion started by: jl487
6 Replies

8. Shell Programming and Scripting

Grepping Multiple Strings on the Same Line 'Or'

I've got this command that I've been using to find strings on the same line, say I'm doing a search for name: find . -name "*" | xargs grep -i "Doe" | grep -i "John" > output.txt This gives me every line in a file that has John and Doe in it. I'm looking to add a OR operator for the second... (5 Replies)
Discussion started by: Rally_Point
5 Replies

9. Shell Programming and Scripting

Grepping using multiple wildcards

Is there anyway you can grep using multiple wildcards? When I run the below line the results return fine; grep 12345 /usr/local/production/soccermatchplus/distributor/clients/*/out/fixtures.xml | awk -F/ '{print $8}' However ideally, I need it to grep for; grep 12345... (3 Replies)
Discussion started by: JayC89
3 Replies

10. Shell Programming and Scripting

Trouble grepping for multiple strings

I am having a heck of a time trying to write a script that will grep for multiple strings in a single file. I am really at my wits end here and I am hoping to get some feedback here. Basic information: OS: Solaris 9 Shell: KSH Oracle Database server I was trying to grep through a file... (5 Replies)
Discussion started by: thecoffeeguy
5 Replies
Login or Register to Ask a Question