Doubt in SED command


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users Doubt in SED command
# 1  
Old 02-19-2008
Doubt in SED command

PLEASE EXPLANIN ME...
sed 's~\(.*\)\(<name>\)\(.*\)\(</name>\)\(.*\)~\2\3\4~'

this is the format
<start><name>123<\name><addr>BAC<\addr><loc>sfo<\loc></start>
# 2  
Old 02-19-2008
Quote:
Originally Posted by gksenthilkumar
PLEASE EXPLANIN ME...
sed 's~\(.*\)\(<name>\)\(.*\)\(</name>\)\(.*\)~\2\3\4~'

this is the format
<start><name>123<\name><addr>BAC<\addr><loc>sfo<\loc></start>
.* zero or more random characters
<name> literally the string
</name> literally the string

Find lines with "<name>" and "</name>", where "<name>" can preceded by any amount of characters, "</name>" can be followed by any amount of characters, and there can be any amount of characters in between "<name>" and "</name>"

\(.....\) whatever is found put in a buffer, subsequent \(.....\) means put in next buffer.

1st \(.*\) will match "<start>" and this string will be placed in buffer 1
\(<name>\) will match "<name>" and this string will be placed in buffer 2
2nd \(.*\) will match "123" and this string will be placed in buffer 3
\(</name>\) will match "</name>" and this string will be placed in buffer 4
\(.*\) will match "<addr>BAC<\addr><loc>sfo<\loc></start>" and this string will be placed in buffer 5.

"~" is used in the sed instead of "/" so the "/" in "</name>" doesnt need to be escaped.

If a line is found which matches the patterns, replace them by what ever is in buffer 2,3 and 4.

So based on the string given:
<start><name>123<\name><addr>BAC<\addr><loc>sfo<\loc></start>

The result of the sed command:
sed 's~\(.*\)\(<name>\)\(.*\)\(</name>\)\(.*\)~\2\3\4~'

will be:
<name>123<\name>

Shorter:
sed 's~.*\(<name>\)\(.*\)\(</name>\).*~\1\2\3~'

With "/" instead of "~":
sed 's/.*\(<name>\)\(.*\)\(<\/name>\).*/\1\2\3/'
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Doubt in sed

Hi All Can some one explain what does the given two sed commands do :confused: sed "s/\'/\\\'/g" | sed 's/\"/\\\"/g' Please find the sample code i used to find out what this is doing , but it has confused me more :wall: $ cat sri1.txt \ ' " $ sed 's/\"/\\\"/g' sri1.txt \ '... (5 Replies)
Discussion started by: Sri3001
5 Replies

2. Shell Programming and Scripting

sed q predicate doubt

Hi, Could anyone please explain me what the following command does? sed -ne "/\"$var\"/{=;q}" file (1 Reply)
Discussion started by: royalibrahim
1 Replies

3. UNIX for Dummies Questions & Answers

sed basic doubt

Hi , what is the equivalent of below awk in sed. awk '$1=="ABC"&&$2=="XYZ" {print $0}' infile Thanks, Shruthi (6 Replies)
Discussion started by: shruthidwh
6 Replies

4. Shell Programming and Scripting

sed doubt in extracting

Hi, Can anyone help me in understanding how the below code works? echo "texxt" | sed 's///' gives output exxt, ideally it should give xxt. as this should remove the chars which is not x. echo 'x_a_b_a_c_a_d' | sed 's/.*\(a\)/\1/' gives output as a_d, which should be 'a' as it's the only... (2 Replies)
Discussion started by: royalibrahim
2 Replies

5. Shell Programming and Scripting

sed doubt...

Hi, i need find and replace a sting with a new variable having value as spaces in between. Eg: set a = "i am variable" set b = "i am second" sed -e 's/find_string/'$a'/g' -e 's/find2_str/'$b'/g' input_file here it is giving error... How to get an varaible, which is... (6 Replies)
Discussion started by: vasanth.vadalur
6 Replies

6. Shell Programming and Scripting

sed command doubt

i have input files like this SFE_DOC_DATE (SFE_DOC_DATE:UniChar.:): "04/18/20" SFE_PSTNG_DATE (SFE_PSTNG_DATE:UniChar.:): "04/18/20" SFE_CREATEDON (SFE_CREATEDON:UniChar.:): "05/31/20" SFE_CLEAR_DATE (SFE_CLEAR_DATE:UniChar.:): "(NULL)" SFE_CLR_DOC_NO... (3 Replies)
Discussion started by: Gopal_Engg
3 Replies

7. Shell Programming and Scripting

A sed doubt - need explanation

Hi, The following command works fine for me, but I could not grasp the logic working behind of sed command, it's obscure to me :( :confused: echo "./20080916/core/audioex.amr" | sed "s%\(\)/%\1_%g" o/p: ./20080916_core_audioex.amr Could anyone please explain to me in detail, that how... (6 Replies)
Discussion started by: royalibrahim
6 Replies

8. Shell Programming and Scripting

Basic SED doubt

Hi Friends!! I want to add a / at the end of a number. for example i have CQ65758 /, in this case i want to shift that backspace one space to the left so the my result becomes CQ65758/. How can i do that with sed. Thanks Adi (3 Replies)
Discussion started by: asirohi
3 Replies

9. UNIX for Dummies Questions & Answers

doubt in sed

hi all, i have a variable exported as VAR=ATTRIB then tried with, echo "tt" | sed 's/^/$VAR/' expected result as ttATTRIB but obtained only, $VARtt i could nt get where i am wrong. Thanks. (3 Replies)
Discussion started by: matrixmadhan
3 Replies

10. Shell Programming and Scripting

doubt it sed

Hello.. i want to use variable in sed.. like sed 's/ROOTMAILID/$variable/g' conf.test but its not working.. please help thanks in advance esham (2 Replies)
Discussion started by: esham
2 Replies
Login or Register to Ask a Question