AWK String replacement


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting AWK String replacement
# 1  
Old 07-15-2008
AWK String replacement

I have an xml file with following tags
<NewTag>value123</xyz>
<NewTag>value321</abcd>

I have to replace the values in between the tags with some value ( VAL1/VAL2)
but the thing the ending tag can be any thing, for this i need a awk command

currently i am using this but it doesn't workSmilie

awk -v n=$OCCURANCE -v s="<$TAGNAME>$TAGVALUE</$TAGNAME>" "/<$TAGNAME(.+)>/&&n==++c{sub(\"<$TAGNAME>(.+)>\",s)}1" $FILENAME

the problem with this expression is the string s which i am building is a static one it doesn't take care of the changing ending tags!!

can some one suggest me the proper expression?Smilie
# 2  
Old 07-15-2008
I tried to understand it but I didn't. Can you post a sample output of what you want to have? And why can the ending Tag be another than the opening Tag?
# 3  
Old 07-15-2008
what i exactly want to do is this

the xml file i need to change contains followin tags

<Myproperty Name="Colour">RED</Myproperty>
<MyName NickName="ppp">MYName</MyName>


you can see that the starting tag and ending tag are different!
i need to get the following out put when i execute the command

<Myproperty Name="Colour">GREEN</Myproperty>
<MyName NickName="ppp">URName</MyName>

hope it's clear?Smilie
# 4  
Old 07-15-2008
Code:
cat infile

<Myproperty Name="Colour">RED</Myproperty>
<MyName NickName="ppp">MYName</MyName>

sed -e '/"Colour"/ { s/>RED</>GREEN</g }' -e '/"ppp"/ { s/MYName/URName/g }' infile

<Myproperty Name="Colour">GREEN</Myproperty>
<MyName NickName="ppp">URName</MyName>

# 5  
Old 07-16-2008
SmilieThanks a lot zaxxon!

can you tell me how can i replace only a speific occurance of this pattern! i mean say i want o replace the 3rd occurance of the RED, then what will be flag for the sed command instead of "g" ?
# 6  
Old 07-16-2008
Code:
sed -e '/"Colour"/ { s/>RED</>GREEN</3 }' -e '/"ppp"/ { s/MYName/URName/3 }' infile

But remember that it will just be the 3rd of the line, not of the whole input as one.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Parallel replacement string

Hi, Using the following command, I can only get rid of the last extension from my input file name: parallel command '>' {.}.output ::: my.input.file The output file is "my.input.output" How can I get rid of the last two extensions of my input file name, so that end up with "my.output"?... (4 Replies)
Discussion started by: forU
4 Replies

2. Shell Programming and Scripting

String replacement

Hi, I have a text file where all records come in one line (single line file), each record starts with 'BUCH' and ends with '@&' and if data is not there we get space instead. between '@&' and next record there might be some spaces, now I want to remove those spaces between '@&' and 'BUCH'. ... (4 Replies)
Discussion started by: maks475
4 Replies

3. Shell Programming and Scripting

String replacement.

Dear Friends, I want to replace following line with given line. It should grep/search following string in a file (input.txt) M/M SRNO: 000M/6200-0362498 COSMETIC PRO MALE FEMALE Once found it should replace it to following string. T_DLHNNO: 000M/6200-0362498 ... (7 Replies)
Discussion started by: anushree.a
7 Replies

4. Shell Programming and Scripting

String replacement

Hi All, I have below file which has data in below format. #$ | AB_100 | AB_300 ()| AB_4 @*(% | AB-789 i want o/p as below format. | AB_100 | AB_300 | AB_4 | AB-789 So here there is no standard format. How we can achieve the same in unix ? Regards, (3 Replies)
Discussion started by: gander_ss
3 Replies

5. Shell Programming and Scripting

Issues with string replacement

I posted this issue a week or so ago and I still cant get the script to work. Here is what I have so far and what Im trying to do. #!/bin/ksh old="$1" new="$2" file=$3 grep $1 $3 > /dev/null if ;then cp $3 ${3}.bak sed "s/$1/$2/g" $3 > ${3}~ mv ${3}~ ${3} fithe script is... (5 Replies)
Discussion started by: gordonheimer
5 Replies

6. Shell Programming and Scripting

String replacement using sed

I need to search and replace a particular string in a file. Only the exact match of the string should be replaced. eg: File contents : abc abcd abcdef --> Replace only 'abc' with 'xyz', but it should not replace abcd with xyzd. So the o/p should be: xyz abcd abcdef. How can this be done? I... (5 Replies)
Discussion started by: sngk
5 Replies

7. Shell Programming and Scripting

String replacement

I have one string string1=user/password:IP_ADDR:Directory I need to replace string1 value like store into string2 string2=user password:IP_ADDR:Directory i.e replace "/" character by '<space>' character But i wouldn't use any file in the meantime. Please help me......................... (6 Replies)
Discussion started by: mnmonu
6 Replies

8. Shell Programming and Scripting

String replacement

Hi I am new to shell scripting but i manage to do some simple things. I am trying to replace a string in one file. I am using sed to replace but it is not permanently writing to the file, rather it is temporary. I want to know whether is there any another method to replace a string in a file... (7 Replies)
Discussion started by: reddybs
7 Replies

9. Shell Programming and Scripting

Replacement of string

Hi I have a text file which contains the following. AAA,BBB,CCC,DDD AAA,BBB,CCC,DDD AAA,BBB,CCC,DDD How can I replace all CCC with 888, with other contents inside the file remain unchange? Please advice Desired output: AAA,BBB,888,DDD AAA,BBB,888,DDD AAA,BBB,888,DDD (1 Reply)
Discussion started by: c0384
1 Replies

10. Shell Programming and Scripting

sed problem - replacement string should be same length as matching string.

Hi guys, I hope you can help me with my problem. I have a text file that contains lines like this: 78 ANGELO -809.05 79 ANGELO2 -5,000.06 I need to find all occurences of amounts that are negative and replace them with x's 78 ANGELO xxxxxxx 79... (4 Replies)
Discussion started by: amangeles
4 Replies
Login or Register to Ask a Question