sed doubt in extracting


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting sed doubt in extracting
# 1  
Old 06-08-2010
sed doubt in extracting

Hi,

Can anyone help me in understanding how the below code works?
Code:
echo "texxt" | sed 's/[^x]//'

gives output exxt, ideally it should give xxt. as this should remove the chars which is not x.

Code:
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 character in the section

Code:
echo 'foo-bar-1.4.5-19.spkg' | sed 's/-[^-]*$//'

and how the above code works?
# 2  
Old 06-08-2010
Quote:
Originally Posted by royalibrahim
Hi,

Can anyone help me in understanding how the below code works?
Code:
echo "texxt" | sed 's/[^x]//'

gives output exxt, ideally it should give xxt. as this should remove the chars which is not x.
try
Code:
echo "texxt" | sed 's/[^x]//g'

Quote:
Originally Posted by royalibrahim
Code:
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 character in the section
the output is normal. You ask to replace all characters up to *the last* a in string. Remember the sed regex are "greedy". They take all they can.

Quote:
Originally Posted by royalibrahim
Code:
echo 'foo-bar-1.4.5-19.spkg' | sed 's/-[^-]*$//'

and how the above code works?
Same as above. That pattern will take all non - characters following a - up to the end of the string. The only part of the string that match that pattern is from the last - up to the end.
# 3  
Old 06-08-2010
Code:
s/[^x]//g

This means "replace the first character which isn't a 'x' with nothing". Since that's done as soon as the first 't' is replaced, sed is finished. If you want to remove all characters leading up to the first 'x', use
Code:
s/[^x]*//g

In the second snipped:
Code:
echo 'x_a_b_a_c_a_d' | sed 's/.*\(a\)/\1/'

you're replacing as many characters as possible from the start until the last possible 'a' with the matched 'a'. The rest of the string isn't affected, so 'x_a_b_a_c_a' is replaced by 'a', which changes 'x_a_b_a_c_a_d' to 'a_d'

Third:
Code:
echo 'foo-bar-1.4.5-19.spkg' | sed 's/-[^-]*$//'

means "starting with a dash, take as many non-dash characters as possible until the end, and replace them with nothing", or "remove everything starting from and including the last possible dash".
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. 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

3. Shell Programming and Scripting

awk script doubt in extracting and comparing uid

Hi, I need to get the value of 'uid' from a line in file f1. For example, in the line below, I need to get the value '150', from the 'anonuid=150' key, and I need to verify that this is a valid uid by checking it against /etc/passwd (i.e) I want to compare this uid, 150 (or more if there are any... (2 Replies)
Discussion started by: royalibrahim
2 Replies

4. Shell Programming and Scripting

doubt while extracting file

Hi friends i am very new to unix.i have one doubt (2 Replies)
Discussion started by: Gopal_Engg
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. UNIX for Advanced & Expert Users

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> (1 Reply)
Discussion started by: gksenthilkumar
1 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