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


Login or Register for Dates, Times and to Reply

 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Finding Last occurance of another pattern when a pattern is found.
# 1  
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  
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 for Dates, Times and to Reply

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

Test Your Knowledge in Computers #101
Difficulty: Easy
Linux is fundamentally a UNIX clone written from scratch by Linus Torvalds with the help of many coders across the globe.
True or False?

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. Shell Programming and Scripting

How to find files which has more than one occurance of pattern

Hello Everyone, Please help me in finding out the solution. The problem is .. lets say i have 600 files in a directory. All 600 files are shell script files. Now i need to find out the files which contains a pattern "SHELL" more than once. No matter how the pattern occurs , it can be in... (10 Replies)
Discussion started by: Prahlad
10 Replies

Featured Tech Videos