Sponsored Content
Top Forums Shell Programming and Scripting grep on string and printing line after until another string has been found Post 302541257 by rxc23816 on Saturday 23rd of July 2011 10:59:22 AM
Old 07-23-2011
Quote:
Originally Posted by bartus11
For your sample data this should work:
Code:
awk -vact="$ACTNUMBER" '$0~"START.*ACTNUMBER="act,/FINISH/' logfile

As for the nested START/FINISH, please post example of such case and the desired output.
Thanks..
There are multiple instances of START to FINISH with the ACTNUMBER within. This script needs to display all of those instances.

However some have another START and FINISH within the START and FINISH.

So sometimes, it will look like this
xxxxxx START xxxxxxxxxxxxxxxx ACTNUMBER=1234 xxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxx FINISH xxxxxxxxxxxxxxxxxxxxxxxxxx

and sometimes there will be this.....

xxxxxx START xxxxxxxxx START xxxxxxxx ACTNUMBER=1234 xxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx FINISHxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxx FINISH xxxxxxxxxxxxxxxxxxxxxxxxxxxxx

This is a long log file so there will be multiple instances of these log snippets then I need the script to display to output in a numbered format with a carriage return between each instance

Someone mentioned grep and using a counter to look for the first and second instance of START and the first and second instance of FINISH if there is one.

Basically what I'm looking for is
for it to find START , if theres a start look for the ACTNUMBER
print or echo that particular line
Look for the same on next line. if this is false, still print the line
Look for the same on next line. if this is false, still print the line
Look for FINISH. If this is true, print the line, then I need it to loop recursively.

For the past week I've been in the grep state of mind. I guess I was way off lol

grep -n START | grep -n ACTNUMBER=$ACTNUMBER gets me the START and ACTNUMBER but I just couldn't figure out how to get those lines to print until FINISH

---------- Post updated at 10:59 AM ---------- Previous update was at 10:57 AM ----------

Quote:
Originally Posted by fpmurphy
grep is not really a good tool to use for this kind of thing. I suggest you look at either awk, perl or sed.

For example, here is one way of printing all lines between START/ACTNUMBER and FINISH using sed:
Code:
sed -n '/START:\(.*\)ACTNUMBER/,/FINISH:/p' file

It does not handle the nested case. For that you need to use a tool like awk or perl.
Thanks.. what does the (.*\) mean? Does that mean everything between START and ACTNUMBER?
 

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to replace all string instances found by find+grep

Hello all Im performing find + grep operation that looks like this : find . -name "*.dsp" | xargs grep -on Project.lib | grep -v ':0' and I like to add to this one liner the possibility to replace the string " Project.lib" that found ( more then once in file ) with "Example.lib" how can I do... (0 Replies)
Discussion started by: umen
0 Replies

2. Shell Programming and Scripting

grep to show date/time of file the string was found in.

I've seen several examples of grep showing the filename the string was found in, but what I really need is grep to show the file details in long format (like ls -l would). scenario is: grep mobile_number todays_files This will show me the string I'm after & which files they turn up in, but... (2 Replies)
Discussion started by: woodstock
2 Replies

3. Shell Programming and Scripting

Grep a string and print a string from the line below it

I know how to grep, copy and paste a string from a line. Now, what i want to do is to find a string and print a string from the line below it. To demonstrate: Name 1: ABC Age: 3 Sex: Male Name 2: DEF Age: 4 Sex: Male Output: 3 Male I know how to get "3". My biggest problem is to... (4 Replies)
Discussion started by: kingpeejay
4 Replies

4. Shell Programming and Scripting

Grep a string and write a value to next line of found string

Hi, I have two variables x and y. i need to find a particular string in a file, a workflow name and then insert the values of x and y into the next lines of the workflow name. basically it is like as below wf_xxxxxx $$a= $$b= $$c= figo $$d=bentley i need to grep the 'wf_xxxx' and then... (6 Replies)
Discussion started by: angel12345
6 Replies

5. 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

6. UNIX for Dummies Questions & Answers

Append a string on the next line after a pattern string is found

Right now, my code is: s/Secondary Ins./Secondary Ins.\ 1/g It's adding a 1 as soon as it finds Secondary Ins. Primary Ins.: MEDICARE B DMERC Secondary Ins. 1: CONTINENTAL LIFE INS What I really want to achieve is having a 1 added on the next line that contain "Secondary Ins." It... (4 Replies)
Discussion started by: newbeee
4 Replies

7. Shell Programming and Scripting

Grep and replace with found string

Hi, I need to find all rows in 1st col of one file in another file (first occurrence) and replace the 1st col of first file with the grep result (the entire line). For example search AA from file 1 in file 2 and replace in file 1 by entire line found. File1 AA BB CC DD BB AA CC DDFile2 ... (2 Replies)
Discussion started by: ritakadm
2 Replies

8. Shell Programming and Scripting

Avoid printing entire line if string not found

so im searching the process table with: ps -ef | awk -F"./rello.java" '{ print substr($0, index($0,$2)) }' I only want it to print everything that's infront of the "./rello.java". That's because im basically getting the arguments that was passed to the rello.java script. this works. ... (2 Replies)
Discussion started by: SkySmart
2 Replies

9. Shell Programming and Scripting

Printing string from last field of the nth line of file to start (or end) of each line (awk I think)

My file (the output of an experiment) starts off looking like this, _____________________________________________________________ Subjects incorporated to date: 001 Data file started on machine PKSHS260-05CP ********************************************************************** Subject 1,... (9 Replies)
Discussion started by: samonl
9 Replies
All times are GMT -4. The time now is 11:03 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy