sed replace characters using a wildcard


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting sed replace characters using a wildcard
# 1  
Old 01-19-2016
sed replace characters using a wildcard

Hello,

I have some data that looks like the following,
Code:
>  <SALTDATA> (OVS0199262)
HCl

>  <IDNUMBER> (OVS0199262)
OVS0199262

>  <SUPPLIER> (OVS0199262)
TimTec

>  <EMAIL> (OVS0199262)
info@timtec.net

>  <WEBSITE> (OVS0199262)
http://www.timtec.net

I need to remove the data in the parentheses and the space following the final > in those lines. The value in parentheses is different in each record.

I tried sed,
sed 's/>\ \(.*\)/>/g' infile > modfile

to me, this reads, find ">" followed by 1 space, followed by open parentheses, followed by any number of any character, followed by close parentheses and replace with ">".

It seems like this should work, unless I don't have the syntax right. Instead, I am getting the output,
Code:
>
HCl

>
OVS0199262

>
TimTec

>
info@timtec.net

>
http://www.timtec.net

where I want the output,
Code:
>  <SALTDATA>
HCl

>  <IDNUMBER>
OVS0199262

>  <SUPPLIER>
TimTec

>  <EMAIL>
info@timtec.net

>  <WEBSITE>
http://www.timtec.net

Here, sed seems to be matching the first greater than on the line instead of the second.

What am I missing here? I am guessing I need to escape the parentheses differently since they have their own meaning in sed.

thanks,

LMHmedchem

---------- Post updated at 06:19 PM ---------- Previous update was at 06:04 PM ----------

I found this,
sed 's/>[^>]*$/>/'
which works by removing everything after the second >. This seems to give me what I want.

I would still like to know what was wrong with my sed command above if anyone can comment.

LMHmedchem

Last edited by LMHmedchem; 01-19-2016 at 07:11 PM..
# 2  
Old 01-19-2016
Code:
sed 's/> (.*)/>/' infile > modfile

is one way. You don't escape parenthesis when you want a real parenthesis, they are escaped to play back groupings in a specific order.

P.S. Instead of the dot, [^)] instead if there is any possibility there could be an extra close parenthesis.

Last edited by wbport; 01-19-2016 at 07:30 PM.. Reason: P.S.
This User Gave Thanks to wbport For This Post:
# 3  
Old 01-19-2016
Quote:
Originally Posted by wbport
Code:
sed 's/> (.*)/>/' infile > modfile

is one way. You don't escape parenthesis when you want a real parenthesis, they are escaped to play back groupings in a specific order.
It never occurred to me to not escape a control character like parenthesis, thanks for the tip. This processed a 1GB input file in about 1.5 min, which is pretty slick I think.

LMHmedchem
# 4  
Old 01-19-2016
You're welcome.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

sed replace nth characters with string

Hi, I hope you can help me out please? I need to replace from character 8-16 with AAAAAAAA and the rest should stay the same after character 16 gtwrhtrd11111111rjytwyejtyjejetjyetgeaEHT wrehrhw22222222hytekutkyukrylryilruilrGEQTH hrwjyety33333333gtrhwrjrgkreglqeriugn;RUGNEURGU ... (4 Replies)
Discussion started by: stinkefisch
4 Replies

2. Shell Programming and Scripting

How to replace all but the first 3 characters with sed?

This seems like it should be an easy problem, but for some reason I am struggling with the solution. I simply want to replace all characters after the first 3 characters with another character, preferably with sed. Thanks in advance. Like this, but producing the proper number of *'s: sed... (30 Replies)
Discussion started by: leolson
30 Replies

3. Shell Programming and Scripting

Replace characters infile with sed

I have several files in a directory that look like this: jacket-n r potential-n - outcome-n f reputation-n b I want to replace the characters in the second column with certain numbers. For instance, I want the letters 'f', 'r' and 'b' in the second column to replaced with 0 and I want the... (1 Reply)
Discussion started by: owwow14
1 Replies

4. Shell Programming and Scripting

sed replace range of characters in each line

Hi, I'm trying to replace a range of characters by their position in each line by spaces. I need to replace characters 95 to 145 by spaces in each line. i tried below but it doesn't work sed -r "s/^(.{94})(.{51})/\ /" inputfile.txt > outputfile.txt can someone please help me... (3 Replies)
Discussion started by: Kevin Tivoli
3 Replies

5. UNIX for Dummies Questions & Answers

Bash: using SED, trying to replace some characters except first or last line

Hi, I require to replace 2 items: 1. replace start of all lines in a file with ' except the first line 2. replace end of all lines in a file with '||chr( except last line I am able to do the entire file using sed -e s/^/\'/g -e s/$/\'\|\|chr\(/g "$file" > newfile.txt but am not yet... (3 Replies)
Discussion started by: Chella15
3 Replies

6. Shell Programming and Scripting

Bash: using SED, trying to replace some characters except first or last line

Hi, I require to replace 2 items: 1. replace start of all lines in a file with ' except the first line 2. replace end of all lines in a file with '||chr( except last line I am able to do the entire file using sed -e s/^/\'/g -e s/$/\'\|\|chr\(/g "$file" > newfile.txt but am not yet able... (0 Replies)
Discussion started by: Chella15
0 Replies

7. Shell Programming and Scripting

Using sed to replace special characters

Hi everyone I have file1 contains: '7832' ' 8765 6543 I want a sed command that will format as: '7832' , '8765' , '6543' I tried sed -e s/\'//g -e 's/^*//;s/*$//' file1 > file2 sed -e :a -e '$!N; s/\n/ /; ta' file2 which gives: 7832 8765 6543 I need some help to continue with... (5 Replies)
Discussion started by: nimo
5 Replies

8. Shell Programming and Scripting

Sed replace characters not equal to an expression

Hi all, Suppose I have a file with the contents below, and I only want to print words %S_ then | sort -u. ------------------------------ The %S_MSG that starts with '%.*s' is too long. Maximum length is %d. The %S_MSG name '%.*s' contains more than the maximum number of prefixes. The... (5 Replies)
Discussion started by: poldo
5 Replies

9. Shell Programming and Scripting

use sed do batch wildcard string replace

Hi, Here is what I want to do I want to search local directory and its sub directory, all the files which contain any string like _12345, then remove this string. String is a combination of _ plus a random integer number. For example, here is one line in a file before <properties... (1 Reply)
Discussion started by: bp5000
1 Replies

10. Shell Programming and Scripting

how to replace control characters using sed?

How can I use sed to replace a ctrl character such as 'new line' (\0a) to something else? Or any other good command can do this job? Thanks, Hillxy (5 Replies)
Discussion started by: hillxy
5 Replies
Login or Register to Ask a Question