if match found go to a particular line in perl


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting if match found go to a particular line in perl
# 15  
Old 03-31-2008
Quote:
Originally Posted by KevinADC
With the sample data you posted, the code I posted does that, it prints 000005.

Thanks a lot again..
Yeah you are right It prints , but my problem here is when the pattern *Main start found I need that no.
But in the above code I got the number before *Main End Pattern.

Regards..
# 16  
Old 03-31-2008
Quote:
Originally Posted by user_prady
Thanks a lot again..
Yeah you are right It prints , but my problem here is when the pattern *Main start found I need that no.
But in the above code I got the number before *Main End Pattern.

Regards..
What? There is no number before "*Main Start". You asked how to get the number one line before "*Main End". Or maybe I just do understand your question.
# 17  
Old 03-31-2008
I think user_prady means the information needs to be printed already at the point when you see the Main Start although it occurs later in the file. So you need to either move things around in the file (the ugly multi-line regex substitution solution) or keep the stuff between Main Start and Main End in memory, and then print the number first, and then all the lines you have been keeping in memory. However, I'm afraid I don't know how to explain how to do this in more detail without repeating myself. In pseudo-code, something like

Code:
if main_start seen then
  do whatever you do but don't print yet
  instead, push @memory, whatever you would have printed
if main_end then
  print the last line from @memory (pop @memory)
  then print all the other stuff from @memory

In real-world code, you have to move things around a little (figure out if you are coming out of "main start seen" as basically the first thing), but this is only pseudo-code, mind.

I'm reluctant to write code before we get confirmation that this is the actual requirement, though.
# 18  
Old 03-31-2008
After re-reading his first post I think you are correct era.

This should be pretty easy with Tie::File or read the entire file into an array, edit the array and then overwrite the file with the new array. I think you may have already suggested that approach.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Modify text file if found multiple pattern match for every line.

Looking for help, i have input file like below and want to modify to expected output, if can without create additional file, hope can direct modify it. have 2 thing need do. 1st is adding a word (testplan generation off) after ! ! IPG: Tue Aug 07 14:31:17 2018 2nd is adding... (16 Replies)
Discussion started by: kttan
16 Replies

2. Shell Programming and Scripting

Add comment on last line if found match

Hi All, totally new on it , normally use it for just 1 line. i'm looking for help. i'm have 2 file. file 1 : -------------------------------------------------- c12 c1 c3 -------------------------------------------------- file 2: other content ... (10 Replies)
Discussion started by: kttan
10 Replies

3. Shell Programming and Scripting

Perl removing line match with pattern in column

Hi, I have log like this: ... (1 Reply)
Discussion started by: justbow
1 Replies

4. Shell Programming and Scripting

Perl removing line match with pattern in column

Hi, I have log like this: ... (1 Reply)
Discussion started by: justbow
1 Replies

5. Shell Programming and Scripting

How to print the entire line if the mentioned match is found?

Hello Everyone, I have a file with 5 fields in each line just like mentioned below. Also the 4th field is time elapsed(hh:mm:ss) since the process is running xyz abc status 23:00:00 idle abc def status 24:00:00 idle def gji status 27:00:02 idle fgh gty status 00:00:00 idle Here I... (8 Replies)
Discussion started by: rahul2662
8 Replies

6. Shell Programming and Scripting

Displaying text till pattern match found in a line

Hi All, From the below line if we want to display all the text till found pattern dot/. I was trying with the below code but couldn't able to print text before the pattern. it display texts which is found after pattern. awk '/assed/{print;getline;print}' file_name | sed 's/^*. *//' input... (4 Replies)
Discussion started by: Optimus81
4 Replies

7. UNIX for Dummies Questions & Answers

Display n lines after match found and other line

I have a file like this DoctorName Address1 Address2 DOB InsuredName Address1 Address2 DOB PatientName Address1 Address2 DOB ClaimNo1 DoctorName Address1 Address2 DOB InsuredName (2 Replies)
Discussion started by: nsuresh316
2 Replies

8. UNIX for Dummies Questions & Answers

awk display the match and 2 lines after the match is found.

Hello, can someone help me how to find a word and 2 lines after it and then send the output to another file. For example, here is myfile1.txt. I want to search for "Error" and 2 lines below it and send it to myfile2.txt I tried with grep -A but it's not supported on my system. I tried with awk,... (4 Replies)
Discussion started by: eurouno
4 Replies

9. Shell Programming and Scripting

help with script to send email and if subject line match is found

Help with script that will check log, then find a match is found, add that as the subject line. 1. The script will always run as a deamon.. and scan the event.log file 2. when a new 101 line is added to the event.log file, have the script check position 5,6 and 7 which is the job name, which... (2 Replies)
Discussion started by: axdelg
2 Replies

10. Shell Programming and Scripting

Perl: Match a line with multiple search patterns

Hi I'm not very good with the serach patterns and I'd need a sample how to find a line that has multiple patterns. Say I want to find a line that has "abd", "123" and "QWERTY" and there can be any characters or numbers between the serach patterns, I have a file that has thousands of lines and... (10 Replies)
Discussion started by: Juha
10 Replies
Login or Register to Ask a Question