Sed for selective pattern replacement


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Sed for selective pattern replacement
# 1  
Old 05-21-2012
Sed for selective pattern replacement

Hi

I am having a code snippet

Code:
grant permission to all user
sts|ln|uSe|PSG
sajncht|se|Use|PPSPSG
psg|ln|use|TSPSG
sts_user.Me revoke

I need to change all occurance of use (uSe,Use,use) with USE. I am using the following sed command for this

Code:
sed 's/[uU][sS][eE]/USE/g' s_sample.txt

Output:

Code:
grant permission to all USEr
sts|ln|USE|PSG
sajncht|se|USE|PPSPSG
psg|ln|USE|TSPSG
sts_USEr.Me revoke

Whereas desired output is as follows

Code:
grant permission to all user
sts|ln|USE|PSG
sajncht|se|USE|PPSPSG
psg|ln|USE|TSPSG
sts_user.Me revoke

It has to be done with a shell script. If somebody can provide a sed command it would be a gr8 help.

Thanks
# 2  
Old 05-21-2012
Code:
# sed 's/\<[uU][sS][eE]\>/USE/g' s_sample.txt
grant permission to all user
sts|ln|USE|PSG
sajncht|se|USE|PPSPSG
psg|ln|USE|TSPSG
sts_user.Me revoke

These 2 Users Gave Thanks to zaxxon For This Post:
# 3  
Old 05-21-2012
Could you please explain the \< and \> ? I have been using sed for some time now but never came across these...
# 4  
Old 05-21-2012
You specify a "word" with the pointed brackets.
Check this out:
GREP for Linguists
See 2.1, Trick #2.
This User Gave Thanks to zaxxon For This Post:
# 5  
Old 05-21-2012
Note: \< an \> are GNU extensions..


--
awk version:
Code:
awk '{for(i=1;i<=NF;i++)if(toupper($i)==s)$i=s}1' FS=\| OFS=\| s=USE infile


Last edited by Scrutinizer; 05-21-2012 at 07:58 PM..
This User Gave Thanks to Scrutinizer For This Post:
# 6  
Old 05-22-2012
Alternatively..
Code:
sed 's/\([^a-zA-Z ]\)[uU][sS][eE]\([^a-zA-Z ]\)/\1USE\2/' inputfile

perl -lne 's/\buse\b/USE/i;print' inputfile

# 7  
Old 05-22-2012
or try with word boundaries (for Gnu sed (* gsed) and ssed(super sed) and latest sed(like sed15..)
Code:
# sed 's/\b[uU][sS][eE]\b/USE/g' infile
grant permission to all user
sts|ln|USE|PSG
sajncht|se|USE|PPSPSG
psg|ln|USE|TSPSG
sts_user.Me revoke

regards
ygemici
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Pattern Matching and replacement

Hello Everybody, I need a help in the below pattern matching and replacement issue I have a file : emp.txt 21356 suresh 12/12/2012 23511 ramesh 11/06/2011 31456 biswajit 09/08/2013 53134 archan 06/02/2009 first field:- employee id, 2nd field is name and third field is date of joining ... (10 Replies)
Discussion started by: shellscripting
10 Replies

2. Shell Programming and Scripting

sed noob needs help with replacement pattern.

Hi there, i am absolutely new in shell programming and especially using sed. What i want to do is to replace every emailaddress suffix with another. In my Testfile there is: foo@bar.comMy attempt to replace every @<something>.<someotherthing> is: sed 's/@+\.+/REPLACE/g' test.txt... (5 Replies)
Discussion started by: Donngal
5 Replies

3. Shell Programming and Scripting

RegEx - selective delete around a pattern

I need RegEx to delete text block delimited by "^--" and "^request saved" if the block contained the pattern "FAILED:No air,rail,hotel or car" in the following. Many thanks in advance! company_id=9292 queue_id=72 internationalOnly=0 Building XML... ABC123 Adding passenger first=First ... (1 Reply)
Discussion started by: roshansharma
1 Replies

4. Shell Programming and Scripting

selective replacement of delimiter

I have a file with two fields seperated by comma data looks like below with the header The o/p should look like this Basically, the req is to replace only the first occuring comma with pipe can we do this with any commands (2 Replies)
Discussion started by: dsravan
2 Replies

5. UNIX Desktop Questions & Answers

Trying to delete a directory pattern-selective deletion

Trying to delete a directory or a file using a pattern-selective deletion (using “*” and “?” ) (4 Replies)
Discussion started by: herberwz
4 Replies

6. Shell Programming and Scripting

sed selective printing

Hi, I have an xml file having serveral smiliar lines as below <INPUT VAR1 ="" DATATYPE ="number(p,s)" VAR2 ="" VAR3 ="3" VAR4="0" VAR5 ="ELEMITEM" VAR6 ="NO" VAR7 ="NOT A KEY" VAR8 ="17" LEVEL ="0" NAME ="UNIX" NULLABLE ="NOTNULL" OCCURS ="0" OFFSET ="19" PHYSICALLENGTH ="15"... (3 Replies)
Discussion started by: dips_ag
3 Replies

7. UNIX for Dummies Questions & Answers

awk pattern replacement

Hi I'm a newbie in unix and I'm having trouble in creating a script. I want to search for a pattern '_good' and insert new lines that contains '_bad', '_med', '_fail' while also ensure that the line contains _good is removed here some of the data UPDATE SCHOOL SET GRADE =... (1 Reply)
Discussion started by: sexyTrojan
1 Replies

8. Shell Programming and Scripting

sed selective data parsing

i have file in the following format *RECORD* *FIELD NO* 123456 *FIELD TX* this is a sample entry *FIELD SA* See Also *FIELD RF* References *FIELD CS* Clinical Symptoms *FIELD AV* Allelic Variants *FIELD EH* Edit History *RECORD* *FIELD NO* 123456 (1 Reply)
Discussion started by: dunstonrocks
1 Replies

9. Linux

matching pattern and replacement

Hi I am trying to look for a view name in create view statement and then replace this view name with VW_ in grants line in my ddl file . cat dim_provider.sql | grep -i "create view" | while read f1 f2 f3 f4 f5 f6 f7 f8 f9 do new_vw=` echo "$f3" | cut -d "." -f2... (32 Replies)
Discussion started by: capri_drm
32 Replies

10. UNIX for Dummies Questions & Answers

Pattern Replacement

There is a requirement that i need to replaced a pattern by another pattern in all the files in my entire file system. there are 1000s of file in the system. let the pattern is "calcuta". i have to replace this pattern by "kolkata" in all those files which contain "calcuta". I am only able to... (12 Replies)
Discussion started by: palash2k
12 Replies
Login or Register to Ask a Question