Question for SEDers


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users Question for SEDers
# 1  
Old 03-05-2007
Question for SEDers

Hi Seders,

Given these lines in a file, say file.txt:
. . .
<tag: ptype>CC<tag: ptype> ( line a )
<tag: pdescr>International<tag: pdescr> ( line b )
<tag: pnum> <tag: pnum> ( line c )
. . .

I'd like to change the third line or line c to " <tag:XXXX> <tag:XXXX> " if and only if:

line a contains the word CC between the tags "<tag: ptype>"
there is a space character between the tags "<tag: pnum>" in line c.

Do you know how can i implement this using SED??? (or any other method)

Thanks
marlonus999

Last edited by marlonus999; 03-05-2007 at 03:03 AM..
# 2  
Old 03-05-2007
This is part of an XML file... I'm doing it on korn shell. thanks

Last edited by marlonus999; 03-05-2007 at 03:04 AM..
# 3  
Old 03-05-2007
Code:
awk '{ if( $0 ~ "^<tagpnum" ) { if ( $0 ~ ">CC<" ) { print "<tag:XXXX> <tag:XXXX>" } else { print } } else { print } }' file

# 4  
Old 03-05-2007
Thanks,.. but i think this tests only line c (third line). I need to test the first line if it has a "CC" word on it..if it does...then i'll change the third line.
# 5  
Old 03-05-2007
Code:
awk 'BEGIN{set=0} { if( $0 ~ "^<tagptype" ) { if ( $0 ~ ">CC<" ) { set=1; print } } else { if ($0 ~ "<tagpnum" ) { print "<tag:XXXX> <tag:XXXX>" } else { print } } }' file

As per your requirement, the above !


Can be optimized ! Smilie
# 6  
Old 03-05-2007
That was great! It worked! Thanks matrixmadhan!

I am just wondering..anyone know a sed version of this??? Please post it, i'll greatly appreciate it Smilie
# 7  
Old 03-05-2007
Quote:
Originally Posted by marlonus999
That was great! It worked! Thanks matrixmadhan!

I am just wondering..anyone know a sed version of this??? Please post it, i'll greatly appreciate it Smilie

Am afraid! Smilie That you didnt check the negative case,

Just now tested that and felt ashamed Smilie

Here is the proper code
for both the cases

Code:
awk 'BEGIN{set=0} { if( $0 ~ "^<tagptype" && $0 ~ ">CC<" ) { set=1; print } else { if ($0 ~ "<tagpnum" && set == 1 ) { print "<tag:XXXX> <tag:XXXX>" } else { print } }  }' file

Login or Register to Ask a Question

Previous Thread | Next Thread

7 More Discussions You Might Find Interesting

1. AIX

df question

Hi, Can anyone please explain a little about df command. I have following question: Following example is showing % used as 4 where as total free blocks are 15.46 out of 16.00 MB blocks. df -m /test Filesystem MBblocks Free %Used Iused %Iused ... (5 Replies)
Discussion started by: itsabhi9
5 Replies

2. Hardware

question

How to add 3 moniters to a pc set up? (2 Replies)
Discussion started by: clicstic
2 Replies

3. Shell Programming and Scripting

question about wc

Hey my friend was asking me if i knew a way to cout how many different words in a file. I told him no not off hand, but i was thinking about it, and i started to wonder also. I imagine this is probably pretty simple im just missing something, I keep confusing my self with how you would compair and... (16 Replies)
Discussion started by: yodadbl07
16 Replies

4. UNIX for Dummies Questions & Answers

mv question

Hello if I like to move file from defined directories system to new directory that not contained any directories system structure . But I like to create the same file system structure as source directory for example : I have 2 directories: foo1 and foo2 foo1 have directories and foo2 have... (2 Replies)
Discussion started by: umen
2 Replies

5. Solaris

vi question

Im trying to edit a 113 meg file in VI and i get the error TMP FILE TOO LARGE. Does someone know how to get around this? Thanks! (1 Reply)
Discussion started by: BG_JrAdmin
1 Replies

6. UNIX for Dummies Questions & Answers

Next Question:

what is the function of swap in linux why i have to create apsolutely a particion for the swap when i install (i installed lnx4win mandrake and made an automat. disk particion and the install program one of my disk partitions that was 3gb devidet in 4 one native 700mb swap 600mb and the others i... (1 Reply)
Discussion started by: user666
1 Replies

7. Programming

Yet Another Question

Now that I have getch() to work, I have yet another problem. BTW, thank you for answering these questions, I do ask a lot, only because I am eager to know, what is a board used for anyways :) Ok, he's the problem... #include iostream.h #include conio.h int main() { char movement; ... (2 Replies)
Discussion started by: mbolthouse
2 Replies
Login or Register to Ask a Question