sed replace


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting sed replace
# 1  
Old 04-27-2011
Error sed replace

hi,

i am new to unix shell scripting,i have a sed expression that says

sed -e 's/ \([a-zA-Z0-9]*/)\(.T[A-Z]*Game\)/Player\2/g'


can someone tell me how this works and the possible inputs it takes
# 2  
Old 04-27-2011
your sed expression doesn't work. here is the corrected one. btw, this might not be a good solution to do the substitution. e.g.
(.T[A-Z]*Game\) what happens, if after "T", there is another "T"? anyway, here is the info you want:

Code:
echo " abcd1024xTBLAHBLAHGame"|sed -n 's/ \([a-zA-Z0-9]*\)\(.T[A-Z]*Game\)/Player\2/g;p'
PlayerxTBLAHBLAHGame

# 3  
Old 04-27-2011
may i know how the change u made is resulting in the ouput and y is mine not working?
# 4  
Old 04-27-2011
your statement:
Code:
sed -e 's/ \([a-zA-Z0-9]*/)\(.T[A-Z]*Game\)/Player\2/g'

it should be
Code:
\(

, or it won't work.
# 5  
Old 04-27-2011
Quote:
Originally Posted by sk1418
Code:
echo " abcd1024xTBLAHBLAHGame"|sed -n 's/ \([a-zA-Z0-9]*\)\(.T[A-Z]*Game\)/Player\2/g;p'
PlayerxTBLAHBLAHGame

If this sed implementation honors locales and if the locale is set to one of the English utf8 locales, the highlighted range expression will be more promiscuous than intended. The reason why is that these utf8 locales interleave the alphabet so that the collation order specified by A-Z also includes all but one of the lowercase letters.

The [a-zA-Z] construct, under those utf8 locales, will cover the entire English alphabet but will include all but 2 letters twice. Fortunately, this still gives the same result as when each letter is included only once.

If the desired match is the uppercase alphabet in the current locale's language (whatever that may be), then the [:upper:] character class should be used.

If only the uppercase English alphabet is to be matched, the script can use [:upper:] with any of the English language locales or it can use [:upper:] or [A-Z] with the C/POSIX locale. In either case, if English only is to be matched, the script should explicitly specify the locale to protect itself against future changes in its invoking environment's locale.

All range expressions (even [0-9]) are technically undefined outside of the POSIX locale. Do not use them unless the C/POSIX locale is in effect. This may seem like a pointless nit, but a few times over the past couple of years I've diagnosed range expressions outside of the C/POSIX locale as the cause of failure in scripts that had worked fine for over a decade. Take my word for it and be kind to your future self, for this bug manifests itself intermittently and, to someone not familiar with how the locale affects the collating sequence, in an unfathomable way.

Regards,
Alister

Last edited by alister; 04-27-2011 at 10:56 AM..
# 6  
Old 04-27-2011
@alister Image Image



valuable comment!
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

sed Replace

I have a file whose output words are always like this: aaaa bbbb cccc dddd. Trying to arrange the data so that there are 2 columns such that the 1st word become the 1st column like this: aaaa aaaa aaaa bbbb aaaa cccc aaaa dddd Trying to use awk... (8 Replies)
Discussion started by: jimmyf
8 Replies

2. Shell Programming and Scripting

Sed/replace help

How can we empty or replace with null, following block of code (within the php quotes including the quotes) from inside a file. *** some other data above this code <? #317008# ... (5 Replies)
Discussion started by: fed.linuxgossip
5 Replies

3. Shell Programming and Scripting

sed replace

Hi, i have a file as give below >cat sample_file param1 val1 2012-06-19 ##there can be one or more space after 2012-06-19 in the above file i want to replace val1 with a with value passed through a variable... below is the command i tried >parval='param1 val2' >par1=param1 >sed... (3 Replies)
Discussion started by: midhun19
3 Replies

4. Shell Programming and Scripting

Help with sed replace

Hello, I have a comman separated file lets day data.txt in following format ,:000002 CH XIN9I.INDX, 34.7534909645,:000002 CH,:Index XIN9I.INDX ,:000063 CH XIN9I.INDX, 6.3062924781,:000063 CH,:Index XIN9I.INDX ,:000776 CH XIN9I.INDX, 2.7001954832,:000776 CH,:Index XIN9I.INDX I would like... (9 Replies)
Discussion started by: srattani
9 Replies

5. UNIX for Dummies Questions & Answers

SED Replace

I'm trying to change a "." in a file name with a "_" I have tried; sed -e 's/./_/g' However this then replaces the entire filename with a load of "_" For example; ls /usr/local/feed/service/customers/test1/configs/test1.httpsend | awk -F/ '{print $9}' | tr "" "" | sed -e "s/./_/g" ... (2 Replies)
Discussion started by: JayC89
2 Replies

6. Shell Programming and Scripting

How to use sed to replace the a string in the same file using sed?

How do i replace a string using sed into the same file without creating a intermediate file? (7 Replies)
Discussion started by: gomes1333
7 Replies

7. Shell Programming and Scripting

using sed to replace help

Hi, i am following content in file cat file Install Installation-path variable Now i need to replace Installation-path with some text to be provided as argument in csh script invocation My question is , can i replace this by only using path eg. sed "s/path/$1" file but it... (1 Reply)
Discussion started by: sarbjit
1 Replies

8. UNIX for Dummies Questions & Answers

sed - replace $

my script: amount1=`tail /tmp/file1.txt` amount2=`tail /tmp/file2.txt` sed -e 's/'${amount2}'/'${amount1}'/g' filename1 > filename2 what did i do wrong ? i just want to replace amount1 with amount2 value. (2 Replies)
Discussion started by: tjmannonline
2 Replies

9. Shell Programming and Scripting

Loop with sed command to replace line with sed command in it

Okay, title is kind of confusion, but basically, I have a lot of scripts on a server that I need to replace a ps command, however, the new ps command I'm trying to replace the current one with pipes to sed at one point. So now I am attempting to create another script that replaces that line. ... (1 Reply)
Discussion started by: cbo0485
1 Replies

10. Shell Programming and Scripting

How to replace using SED?

Hi, I want to change a particular string in a file with another string. This is part of a larger script file. I m using SED for this purpose: sed -e 's/hostname.domainname/${HOST}.${DOMAIN}/g' $sed_file>$tmp_file Where the occurance hostname.domainname has to be replaced with the... (4 Replies)
Discussion started by: mahatma
4 Replies
Login or Register to Ask a Question