Finding Last occurance of another pattern when a pattern is found.


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Finding Last occurance of another pattern when a pattern is found.
# 1  
Old 07-23-2008
MySQL Finding Last occurance of another pattern when a pattern is found.

Hi,

I have two files viz,

rak1:
$ cat rak1
Quote:
#this is test

[section1]
PMAN 2
ZMAN 4

[section2]
xxx 0
NOP 6

[section 3]
PMAN 1
ZMAN 8
rak2:

$ cat rak2
Quote:
#this is test

[section1]
PMAN 2
ZMAN 9

[section2]

xxx 0
NOTA 5
TOCN 8






[section 3]
PMAN 1
Code:
sdiff rak1 rak2

returns:

Quote:
$ sdiff rak1 rak2
#this is test #this is test

[section1] [section1]
PMAN 2 PMAN 2
ZMAN 4 | ZMAN 9

[section2] [section2]
>
xxx 0 xxx 0
NOP 6 | NOTA 5
> TOCN 8

>
>
>
>
>
[section 3] [section 3]
PMAN 1 PMAN 1
ZMAN 8 <
I want the lines that got modified, changed, or deleted preceding with the section they are in.

I have done this so far:

Quote:
$ sdiff rak1 rak2 | sed 's/ //g' | grep -n "." | egrep -e "\||<|>" | sed '/>$/d'
5:ZMAN 4 |ZMAN 9
10:NOP 6 |NOTA 5
11:>TOCN 8
20:ZMAN 8 <
but I dont know how to put section in front of the changed,added or deleted lines.

Also it would be appreciated if the output could be printed as

[section X] <valInFile1/valInFile2> <valInFile1/valInFile2>
and so on.



Please Help me out
# 2  
Old 07-23-2008
I do not see why you need the egrep. Use sed for that filtering - easy.
Now, using -n option you prevent sed from printing unnessesary line.
After that just print what you need: lines with section number and lines with changes:
Code:
> sdiff rak1 rak2 | grep -n "." | sed -n '/>$/d; /section/p; /[|<>]/p'

Ok, deleting still needed

The only not-nice, the sections with no changes will be in that printout

I could not get it by 'sed'
Easy with nawk:
Code:
>....|
nawk '{if ( ($0 !~ /section/) || (prev !~ /section/) ) print prev; prev=$0;}
        END{if ($0 !~ /section/) print $0;}'

Not clear why it has empty line in beginning and end; so, remove it by :
Code:
>...|nawk NF;

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

[sed] Finding and sticking the pattern to the beginning of successive lines up to the next pattern

I have a file like below. 2018.07.01, Sunday 09:27 some text 123456789 0 21 0.06 0.07 0.00 2018.07.02, Monday 09:31 some text 123456789 1 41 0.26 0.32 0.00 09:39 some text 456789012 1 0.07 0.09 0.09 09:45 some text 932469494 1 55 0.29 0.36 0.00 16:49 some text 123456789 0 48 0.12 0.15 0.00... (9 Replies)
Discussion started by: father_7
9 Replies

2. Shell Programming and Scripting

Finding the pattern and replacing the pattern inside the file

i have little challenge, help me out.i have a file where i have a value declared and and i have to replace the value when called. for example i have the value for abc and ccc. now i have to substitute the value of value abc and ccc in the place of them. Input File: go to &abc=ddd; if... (16 Replies)
Discussion started by: saaisiva
16 Replies

3. Shell Programming and Scripting

If first pattern is found, look for second pattern. If second pattern not found, delete line

I had a spot of trouble coming up with a title, hopefully you'll understand once you read my problem... :) I have the output of an ldapsearch that looks like this: dn: cn=sam,ou=company,o=com uidNumber: 7174 gidNumber: 49563 homeDirectory: /home/sam loginshell: /bin/bash uid: sam... (2 Replies)
Discussion started by: samgoober
2 Replies

4. Shell Programming and Scripting

Search for a pattern in a String file and count the occurance of each pattern

I am trying to search a file for a patterns ERR- in a file and return a count for each of the error reported Input file is a free flowing file without any format example of output ERR-00001=5 .... ERR-01010=10 ..... ERR-99999=10 (4 Replies)
Discussion started by: swayam123
4 Replies

5. Shell Programming and Scripting

sed pattern to delete lines containing a pattern, except the first occurance

Hello sed gurus. I am using ksh on Sun and have a file created by concatenating several other files. All files contain header rows. I just need to keep the first occurrence and remove all other header rows. header for file 1111 2222 3333 header for file 1111 2222 3333 header for file... (8 Replies)
Discussion started by: gary_w
8 Replies

6. Shell Programming and Scripting

Need 10 lines before the first occurance of a pattern

Here is the text file: 1This is a text file 2this is a text file 3This is a text file 4this is a text file 5This is a text file 6this is a text file 7This is a text file 8this is a text file 9This is a text file 10this is a text file 11This is a text file 12this is a text file 13This... (4 Replies)
Discussion started by: Johny001
4 Replies

7. Shell Programming and Scripting

search a pattern and if pattern found insert new pattern at the begining

I am trying to do some thing like this .. In a file , if pattern found insert new pattern at the begining of the line containing the pattern. example: in a file I have this. gtrow0unit1/gctunit_crrownorth_stage5_outnet_feedthru_pin if i find feedthru_pin want to insert !! at the... (7 Replies)
Discussion started by: pitagi
7 Replies

8. Shell Programming and Scripting

Pattern matching first occurance only wanted

I have the following code: declare -a search search=(name label elapsed totalfilecount totalfilebytes starttime exitcode errors warnings fatals) for (( i = 0 ; i < ${#search} ; i++ )) do data=`awk -F '^'${search}'=\"' 'BEGIN{RS="\" "; OFS="\n"; ORS=""} { print $2 }' summary.alg` ... (1 Reply)
Discussion started by: Ikon
1 Replies

9. UNIX for Dummies Questions & Answers

Replace first 5 occurance of a pattern

There is scenario that i have to replace a pattern at the first 5 occurance in a file. say i need to replace 'abc' by 'xyz' at its first 5 occurance in a file a.txt, can anybody help me how it can be done, i can do complete replacement of the pattern using sed throughtout the file. (1 Reply)
Discussion started by: palash2k
1 Replies

10. UNIX for Dummies Questions & Answers

Count of matched pattern occurance

In a file a pattern is occured many times randomly. Even it may appear more then once in the same line too. How i can get the number of times that pattern appeared in the file? let the file name is abc.txt and the pattern is "xyz". I used the following code: grep -ic "xyz" abc.txt but it is... (3 Replies)
Discussion started by: palash2k
3 Replies
Login or Register to Ask a Question