sed regex


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers sed regex
# 1  
Old 01-30-2002
sed regex

I would like to do this:

replace the word "prod" with the word "special" but it may occur through the file naturally without a command, I only want it to happen when it has a specific command in front of it. The command will always look like this

<IMG,###,###,##,>prod/directory/IMG/file

Now the numbers (parameters can happen numerous times or not ) so it can look like this <IMG,320,123,2,2,1,1,1,1,2>prod/... or like this <IMG,100,100,2,2>prod/...

What I have at the moment is sed s/"\>prod"/"\>special"/g but I want it to include the command as the regex and it has to go back in front of the word the same way.

Any suggestions to a safer regex?

I was thinking something like this or along these lines: (but it doesn't work and i am not really familiar with the ".*")

sed s/\(IMG,.*\)prod/\1special/

Thanks in anticipation!
Shakey21
# 2  
Old 01-31-2002
Try:
sed 's=\(<IMG,[0-9,]*>\)prod/=\1special/='
# 3  
Old 01-31-2002
thanks

that works great, except:

but I was also wondering is there a way around if the IMG call was in lowercase (sorry, I neglected this before). I guess something like (IMG|img)...?

Secondly can you please explain exactly what is happening here (it makes it simpler for me to not need to ask the next time when something similiar comes up). I've been referencing a couple of books and I don't think I've seen before the "=" used in the sed command. The man page doesn't tell me much either.

Thanks again, much appreciated!
Shakey21
# 4  
Old 01-31-2002
Try:
sed 's=\(<[Ii][Mm][Gg],[0-9,]*>\)prod/=\1special/='

As for the equals sign, my sed man page, as it describes the s command, says "Any character can be used instead of /." Slash wasn't a good choice here since the data also contains a slash. Had I used a slash for the delimiter, I would have had to backslash any slashes that weren't delimiters. Switching delimiters eliminates the need for the backslashes.
# 5  
Old 01-31-2002
i didn't know that

but thats even better than brilliant

Thanks!!
Shakey21
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Regex with sed

hi i would like to say "DATABASENAME=" to "TABLESNAME=" remove "," and press enter myconfig file thanks (1 Reply)
Discussion started by: mnnn
1 Replies

2. Shell Programming and Scripting

Multiple regex in sed

I am using the following sed script to remove new lines (\r\n and \n), except from lines starting with >: sed -i ':a /^>/!N;s/\r\n\(\)/\1/;s/\n\(\)/\1/;ta' Is there a way to include both \r\n and \n in one regex to avoid the second substitute script (s/\n\(\)/\1/)? (4 Replies)
Discussion started by: Xterra
4 Replies

3. Shell Programming and Scripting

Help with sed substitution / regex

Hi all, please can anyone show me how to use sed and regular expressions to achieve the following. If a line contains a capital A followed by exactly 5 or 6 characters followed by an angled bracket then insert an asterix before the angled bracket. So: XCONFIGA12345<X Becomes: ... (5 Replies)
Discussion started by: Jedimark
5 Replies

4. Shell Programming and Scripting

Question on awk/sed/regex

I plan to do something like this in awk that's embedded in a shell script. I have extracted a text file using awk and the output is before example: <USDOLLARS|xxx> I want to use get rid of the starting "<" and anything after the pipe "|" after example: USDOLLARS How do I do that?? I... (8 Replies)
Discussion started by: deadyetagain
8 Replies

5. Shell Programming and Scripting

Use regex in replacement string in SED

Hi, I need to use the regex in the replacement string in SED command. something like sed -e ' s/\(^\{5\}\).\{150\}\(.*\)$/\10\{30\}1\{30\}A\{60\}B\{30\}\2/' abc which means for all the lines in file abc that starts with 5 characters, I need to replace character 6-151... (6 Replies)
Discussion started by: snowline84
6 Replies

6. UNIX for Advanced & Expert Users

Sed regex problem

Hi, I tried to extract the time from `date` with sed. (I know it works with `date +%H:%M:%S` as well) I got three solutions of which just one worked. I thought "+" should repeat the previous expression 1 or more times and {n} should repeat the previous expression n times. $ date Thu... (9 Replies)
Discussion started by: thiuda
9 Replies

7. Shell Programming and Scripting

Converting perl regex to sed regex

I am having trouble parsing rpm filenames in a shell script.. I found a snippet of perl code that will perform the task but I really don't have time to rewrite the entire script in perl. I cannot for the life of me convert this code into something sed-friendly: if ($rpm =~ /(*)-(*)-(*)\.(.*)/)... (1 Reply)
Discussion started by: suntzu
1 Replies

8. Shell Programming and Scripting

sed - using regex and | need help

From my understanding when using regex1|regex2 the matching process tries each alternative in turn, from left to right, and the first one that succeeds is used. When im trying to extract the name from those examples: A) name.can.be.different.20.03.2009.boom B)... (2 Replies)
Discussion started by: TehOne
2 Replies

9. Shell Programming and Scripting

Sed and regex help needed

Hi all, I'm writing a script that replaces a value in a file. The file is formatted as follows: So, for this example, I'd like to replace the value for param_two. The value for param_two can be a one, or two-digit number. It replaces the value in file.cfg, and directs the... (9 Replies)
Discussion started by: marknu1
9 Replies

10. UNIX for Dummies Questions & Answers

using sed and regex to reverse order???

so i have been trying to learn how to manipulate text on my own and have gotten stumped... let's say i have a text file that says (highly simplified): people ordinary How would swap the order of the words.. I know i need to use sed and some kind of back reference but cannot make it... (2 Replies)
Discussion started by: urtherhoda
2 Replies
Login or Register to Ask a Question