Replacing part of a pattern in sed


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Replacing part of a pattern in sed
# 1  
Old 01-07-2011
Replacing part of a pattern in sed

Hi
I have a piece of xml that has a pattern like this
<int>159</int><int>30</int>
I want to find this pattern but only substitute the second part of the pattern to {rid1}.
Is that possible in sed ?
Thanks.

---------- Post updated at 12:10 PM ---------- Previous update was at 12:01 PM ----------

Actually the source xml fragment is :
<int>159</int>\n <int>30</int>
After replacement the output should be
<int>159</int>\n <int>{rid1}</int>

Thanks.
# 2  
Old 01-07-2011
Code:
sed 's/<int>\([0-9]*\)/<int>{rid1}/2' inputFile

OR
Code:
sed 's/[0-9][0-9]*/{rid1}/2' inputFile


Last edited by anurag.singh; 01-07-2011 at 01:25 PM..
This User Gave Thanks to anurag.singh For This Post:
# 3  
Old 01-07-2011
Hi,
Here is my input file (r.txt):
<int>163</int>\n <int>30</int>
And my sed command in r.sed
s/<int>\([0-9]+\)<\/int>\n\( *\)<int>\([0-9]+\)<\/int>/<int>\{requestId\}<\/int>/2

sed -f r.sed r.txt

produced

<int>163</int>\n <int>30</int>

What am I missing ?

Thanks!
# 4  
Old 01-07-2011
You are trying to use extended regular exp and I believe Extended Reg Exp are used by egrep (or grep -E) and awk. This is not for sed. Others~, pls correct if wrong.
Try command in post #2.
# 5  
Old 01-07-2011
in your matching pattern, replace every following pattern
Code:
[0-9]+

by this one:
Code:
[0-9][0-9]*

# 6  
Old 01-07-2011
I tried the following in r.sed

s/<int>\([0-9][0-9]*\)<\/int>\n\( *\)<int>\([0-9][0-9]*\)<\/int>/<int>\{requestId\}<\/int>/2

No luck. Same output as before:
<int>163</int>\n <int>30</int>
# 7  
Old 01-07-2011
If you'd post your full input file as well as a reprensentative example of the expected output , it would help.

Here is just a little example , i hope it helps.

Code:
# echo '<int>163</int>\n <int>30</int>\n<int>163</int>\n <int>30</int>'
<int>163</int>
 <int>30</int>
<int>163</int>
 <int>30</int>
# echo '<int>163</int>\n <int>30</int>\n<int>163</int>\n <int>30</int>' | sed '/163/N;s:>[0-9][0-9]*<:>{rid1}<:2'
<int>163</int>
 <int>{rid1}</int>
<int>163</int>
 <int>{rid1}</int>
#

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Replacing lines matching a multi-line pattern (sed/perl/awk)

Dear Unix Forums, I am hoping you can help me with a pattern matching problem. What am I trying to do? I want to replace multiple lines of a text file (that match a multi-line pattern) with a single line of text. These patterns can span several lines and do not always have the same number of... (10 Replies)
Discussion started by: thefang
10 Replies

2. Shell Programming and Scripting

Replacing part of the sentence using echo and sed

Hi, Iam using ksh and trying to execute the following syntax to replace one word of the sentence with a new word. But somehow sed is not able to replace the old value with new value. Please let me know where Iam going wrong. Sample Code : --> export line="VORTEX,abcdef" export... (3 Replies)
Discussion started by: ajithab
3 Replies

3. Shell Programming and Scripting

sed command for copying the contents of other file replacing it another file on specifc pattern

We have 2 file XML files - FILE1.XML and FILE2.xml - we need copy the contents of FILE1.XML and replace in FILE2.xml pattern "<assignedAttributeList></assignedAttributeList>" FILE1.XML 1. <itemList> 2. <item type="Manufactured"> 3. <resourceCode>431048</resourceCode> 4. ... (0 Replies)
Discussion started by: balrajg
0 Replies

4. Shell Programming and Scripting

help - sed - insert space between string of form XxxAxxBcx, without replacing the pattern

If the string is of the pattern XxxXyzAbc... The expected out put from sed has to be Xxx Xyz Abc ... eg: if the string is QcfEfQfs, then the expected output is Qcf Ef Efs. If i try to substitute the pattern with space then the sed will replace the character or pattern with space,... (1 Reply)
Discussion started by: frozensmilz
1 Replies

5. Shell Programming and Scripting

sed - replacing on the right of a pattern and looking for exact word?

how would you get SED to do the following, say you have the following lines in a text file: user=tigger some text some text some text some text some text some text user=ted some text some text some text some text some text some text user=thekingofrockandroll you want to find any line... (15 Replies)
Discussion started by: rich@ardz
15 Replies

6. Shell Programming and Scripting

Selecting a part of the text (regex pattern, awk, sed)

Hello, let's start by giving you guys a few examples of the text: "READ /TEXT123/ABC123" "READ /TEXT123/ABC123/" "READ TEXT123/ABC123" "READ TEXT123/ABC123/" "READ TEXT123/TEXT456/ABC123" "READ /TEXT123/TEXT456/ABC123" "READ /TEXT123/TEXT456/ABC123/" TEXT and ABC can be and I... (5 Replies)
Discussion started by: TehOne
5 Replies

7. Shell Programming and Scripting

Replacing or removing a long list of pattern by using awk or sed

Input: >abc|123456|def|EXIT| >abc|203456|def|EXIT2| >abc|234056|def|EXIT3| >abc|340056|def|EXIT4| >abc|456000|def|EXIT5| . . . Output: def|EXIT| def|EXIT2| def|EXIT3| def|EXIT4| def|EXIT5| . . My try code: (9 Replies)
Discussion started by: patrick87
9 Replies

8. Shell Programming and Scripting

sed remembering part of pattern using \1 concept

I am using this concept to fetch value of IP address after node= in this line of csv text: a="Measurement:,OutInviteResponseTime,Sessionid=1860700092328051458,node=67.178.40.168,nodeName=abcd,protocol=GK,25523000" echo $a | sed 's/.*node=\(.*\).*/\1/' But this outputs: ... (10 Replies)
Discussion started by: indianjassi
10 Replies

9. Shell Programming and Scripting

Need help in sed command ( Replacing a pattern inside a file with a variable value )

Hello, The following sed command is giving error sed: -e expression #1, char 13: unknown option to `s' The sed command is echo "//-----" | sed "s/\/\/---*/$parChk/g" where parChk="//---ee-" How can i print the variable value from sed command ? And is it possible to replace a... (2 Replies)
Discussion started by: frozensmilz
2 Replies

10. Shell Programming and Scripting

Sed and replacing one occurence of pattern

I would like to use sed to replace one occurence of a pattern in a file. When I use the s/// command it replaces all occurences of the pattern in the file. Should I be using something other than sed? Thanks (6 Replies)
Discussion started by: ss9u
6 Replies
Login or Register to Ask a Question