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


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting sed - replacing on the right of a pattern and looking for exact word?
# 1  
Old 09-01-2010
Lightbulb 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 which has 'user=[the user name]' and replace it with 'user=xxx'

so the string after the 'user=' will always contain a different number of characters but you just want to sed to find any lines with 'user=' and replace the part after 'user=' with 'xxx' no matter what?

and...

if what to replace say 'AM' in a text file with 'JO', i can do:

Code:
sed 's/AM/JO/g;s/am/jo/g'

but what if the text file where i'm running this looks like this:

AM
TAME
am
jammy

I only want to replace the following lines with 'JO':

AM
am

so I want to leave 'TAME' and 'jammy' in there - the sed above will give this:

JO
TJOE
jo
JJOMY

I want:

JO
TAME
jo
jammy

how do you achieve that with SED?

Cheers! Smilie

Last edited by rich@ardz; 09-01-2010 at 12:07 PM.. Reason: Code tags :)
# 2  
Old 09-01-2010
Code:
sed 's/user=.*/user=xxx/'

and:
Code:
sed 's/^am$/jo/i'

This User Gave Thanks to bartus11 For This Post:
# 3  
Old 09-02-2010
hmm, that's not working the 'am' is still present in the file after it has ran? I have:

Code:
sed 's/^am$/jo/i' "$f" > "$f".tmp && cp -f "$f".tmp "$f" && rm "$f".tmp

Using OpenSolaris 10 btw, not sure what version of sed i have? will that matter?

---------- Post updated at 04:40 PM ---------- Previous update was at 04:23 PM ----------

the $ was not needed, just the ^

Code:
sed 's/^am/jo/i' "$f" > "$f".tmp && cp -f "$f".tmp "$f" && rm "$f".tmp

works now cheers Smilie

---------- Post updated at 05:24 PM ---------- Previous update was at 04:40 PM ----------

i see the ^ seems to overide differences between uppercase and lowercase?
# 4  
Old 09-02-2010
^ means start of the line, matching regardles of the characters' case is done by /i modifier.
# 5  
Old 09-03-2010
hmm, what I would like ideally is this (say I'm replacing JO with BO)

my file to run sed on looks like this (as an example):

akdjfdkl sdjfklsjdf jsdfkljsf JO KSJDFKDFJLJOdsjfskldjf dsjfkljsfl <---- first JO on this line should be replaced by sed, second one should not because it forms part of a word
akdjalsd@JO <--- JO should be replaced here by sed
sdfkjdslfjsl@dfdsf_JO <----- and here
JO <---- and here
jo <----- and here
# 6  
Old 09-03-2010
Does it have to be sed?
Code:
perl -pe 's/(?<![a-z])jo(?![a-z])/bo/ig' file

These 2 Users Gave Thanks to bartus11 For This Post:
# 7  
Old 09-03-2010
Quote:
Does it have to be sed?
Hell no! Smilie
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Getting error in sed command in replacing a word in all xmls

Hi Folks , I have to replace the following value in all the xml files so the value is tcp://pondevpms1.fm.rbsgrp.net:6033,pondevpms2.fm.rbsgrp.net:6033 and the value with it need to be replaces is shown below tcp://pondevpms1:3063 so i have fired the below command inside... (3 Replies)
Discussion started by: unclesamm
3 Replies

2. Shell Programming and Scripting

sed - Exact pattern matching and replace

Hi Team, I am facing a problem as under, Suppose I have a file (test.txt) with the below content (all braces and slashes are included in the contents of the file) Now I want to append few words below matched line, I have written the below sed: sed '/option/a insert text here' test... (2 Replies)
Discussion started by: ankur328
2 Replies

3. Shell Programming and Scripting

Replacing a particular word with another word in all the xml's under a particular directory with sed

Hi Folks, Could you please advise what will be the SED command to replace a word in all xml's under a particular directory for example let say I rite now at the following below location $ cd /ter/rap/config now under config directory there will be lots of xml file , now my objective is to... (1 Reply)
Discussion started by: punpun66
1 Replies

4. UNIX for Dummies Questions & Answers

Find EXACT word in files, just the word: no prefix, no suffix, no 'similar', just the word

I have a file that has the words I want to find in other files (but lets say I just want to find my words in a single file). Those words are IDs, so if my word is ZZZ4, outputs like aaZZZ4, ZZZ4bb, aaZZZ4bb, ZZ4, ZZZ, ZyZ4, ZZZ4.8 (or anything like that) WON'T BE USEFUL. I need the whole word... (6 Replies)
Discussion started by: chicchan
6 Replies

5. Shell Programming and Scripting

sed to exact matching a word in free BSD

Hi, Thanks for looking at this issue. I have many words/lines in a files like below apple pine apple custored apple apple apple if i want to replace only/exact apple occurrences with XXX i could use below, sed 's/\<apple\>/XXX/g' filename this is working in Linux, but now in my free BSD... (3 Replies)
Discussion started by: ramanaraoeee
3 Replies

6. Shell Programming and Scripting

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... (11 Replies)
Discussion started by: vnn
11 Replies

7. 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

8. 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

9. Shell Programming and Scripting

SED: delete and print the only exact matched pattern

I am really need help with the regular expression in SED. From input file, I need to extract lines that have the port number (sport or dport) as defined. The input file is something like this time=1209515280-1209515340 dst=192.168.133.202 src=208.70.8.23 bytes=2472 proto=6 sport=80 dport=1447... (6 Replies)
Discussion started by: new_buddy
6 Replies

10. Shell Programming and Scripting

Replacing a word after a matched pattern

Hello, Actually i want to replace the word after a matched pattern. For Ex: lets say that i am reading a file line by line while read line do echo $line # i need to search whether a pattern exists in the file and replace the word after if the pattern exist. # for example :... (1 Reply)
Discussion started by: maxmave
1 Replies
Login or Register to Ask a Question