grep a string in a file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting grep a string in a file
# 1  
Old 04-13-2012
grep a string in a file

Hi ,

i'm trying to create a code for the belwo scenario.

i have a data in a file file.txt like below.

Code:
ram
dept
comp
shyam
field
comp

Now i need write a code to find the string which is always 2 lines before the string "comp"

Can you please help me in this.

Thanks in advance

Last edited by Scrutinizer; 04-13-2012 at 05:38 PM.. Reason: code tags
# 2  
Old 04-13-2012
grep is not a programming language. it can't be told to rewind 2 lines and print if it finds a match.

awk is a programming language and, while it can't rewind, it can save lines for later:

Code:
awk '{ LINES[(++L)%3]=$0 }; /comp/ && (L>2) { print LINES[(L-2)%3] }' filename

This User Gave Thanks to Corona688 For This Post:
# 3  
Old 04-13-2012
Use this code. Just one line would do the job for you
Code:
nawk 'c-->0;$0~s{if(b)for(c=b+1;c>1;c--)print r[(NR-c+1)%b];print;c=a}b{r[NR%b]=$0}' b=2 a=0 s="comp" file.txt

You can change the "b" and "a" variables to match your criteria.
use "b" to get lines above and "a" to get lines below your string pattern ("s" variable is pattern)
eg: b=0 and a=2 will give you two lines below the string (shyam and field in this case)
This User Gave Thanks to grep_me For This Post:
# 4  
Old 04-13-2012
Hi ,

Thanks for the quick reply.It's giving me the correct o/p.Say if i need to finf a string 26 lines before "comp" string do i need to write then?

---------- Post updated at 11:04 AM ---------- Previous update was at 11:01 AM ----------

Hi ,

Thanks for the reply.
I have run the code sent by you which is giving me all the strings for b=2 and a=0
# 5  
Old 04-13-2012
Code:
grep -B2 comp <file>

Well this is not the ideal solution! as different systems have different flavors of grep

See if it matches with your requirement. Personally i would not use grep to do this because it will add "external" dependency for your script.
# 6  
Old 04-13-2012
I thought you needed 2 lines above the string you wanted. isnt it?
the code above gives you 2 lines above and 0 lines below the string including the string you wanted.
# 7  
Old 04-13-2012
Thanks for the reply.
Here in the file i put 2 lines above only.
Actually my requirement is to print the string which is 26 lines above every occurence of "comp" string only.

Sorry if i have misguided you.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Replace string of a file with a string of another file for matches using grep,sed,awk

I have a file comp.pkglist which mention package version and release . In 'version change' and 'release change' line there are two versions 'old' and 'new' Version Change: --> Release Change: --> cat comp.pkglist Package list: nss-util-devel-3.28.4-1.el6_9.x86_64 Version Change: 3.28.4 -->... (1 Reply)
Discussion started by: Paras Pandey
1 Replies

2. Shell Programming and Scripting

Grep string in files and list file names that contain the string

Hi, I have a list of zipped files. I want to grep for a string in all files and get a list of file names that contain the string. But without unzipping them before that, more like using something like gzcat. My OS is: SunOS test 5.10 Generic_142900-13 sun4u sparc SUNW,SPARC-Enterprise (8 Replies)
Discussion started by: apenkov
8 Replies

3. Shell Programming and Scripting

grep exact string from files and write to filename when string present in file

I am attempting to grep an exact string from a series of files within a directory and append that output to the filename when it is present in the file. I've been after this all day with no luck. Thanks for your help in advance :wall:. (4 Replies)
Discussion started by: JC_1
4 Replies

4. Shell Programming and Scripting

Grep a string from input file and delete next three lines including the line contains string in xml

Hi, 1_strings file contains $ cat 1_strings /home/$USER/Src /home/Valid /home/Review$ cat myxml <projected value="some string" path="/home/$USER/Src"> <input 1/> <estimate value/> <somestring/> </projected> <few more lines > <projected value="some string" path="/home/$USER/check">... (4 Replies)
Discussion started by: greet_sed
4 Replies

5. UNIX for Dummies Questions & Answers

How to grep string from nohup.out file

Hi, I have one shell script, which run another one script inside in nohup mode. I want to search one string from the nohyup.out file in the same mail shell script itself .Can anyone help me?? Please find the code below: total_ear=`cd ear ; ls *.ear | wc -l | tr -d ' '` for ear in `cd ear ; ls... (0 Replies)
Discussion started by: ckchelladurai
0 Replies

6. Shell Programming and Scripting

grep string from a file

hi everyone, 1.txt 12 34 56 2.txt 456----aa abc;b;b;b 34;a;a;a;a output is 456----aa 34;a;a;a;a (11 Replies)
Discussion started by: jimmy_y
11 Replies

7. Shell Programming and Scripting

If else - grep a string in a file

Hi all, I would want to recieve notification only if there are sessions block in our databases. This is my script, but it's not working. No matter what is the contents in the $OUTFILE, I get emails. /usr/bin/cat $OUTFILE | read selected if then echo "No session is blocked" else ... (7 Replies)
Discussion started by: *Jess*
7 Replies

8. Shell Programming and Scripting

How to grep a string in todays file

Hello guys - I am new to Unix. I am trying to understand how to grep a perticular string in todays file? I am trying this syntax but not getting what I am looking for: % grep `date '+%d/%b/%Y'` For instance there are 2 files generated today with same data. I am trying to find them and... (21 Replies)
Discussion started by: DallasT
21 Replies

9. UNIX for Dummies Questions & Answers

Grep and count the string in a file.

Hi, I have to grep a word 'XYZ' from 900 files ( from 2007 till date), take its count month wise. The output should display month, count , word 'XYZ' . I tried searching the forum for solution but could find any. I would apprieciate if any one can help me asap .... Many Thanks:) (12 Replies)
Discussion started by: vikram2008
12 Replies

10. Shell Programming and Scripting

how to grep for string in log file

Hi Im running a backup scriptwhich creates a log file how do grep for the string in the logfile so the backup script can continue to next stage otherwise it will exit i.e 12:32:53 INF - Client completed sending data for backup 12:33:02 INF - Backup by root on client lonbob04bak using... (4 Replies)
Discussion started by: eb222
4 Replies
Login or Register to Ask a Question