Computing.Net > Forums > Unix > character replacement using sed/awk

character replacement using sed/awk

Reply to Message Icon

Original Message
Name: Rohit
Date: September 11, 2004 at 19:53:44 Pacific
Subject: character replacement using sed/awk
OS: UNIX
CPU/Ram: 1
Comment:


We have a tilde delimited file with tilde in the character data also. Character data is always in double quotes. For example

1~23~"abc"~1.1~"xy~x"

We need to change the tilde in character data to a dash, as below.

1~23~"abc"~1.1~"xy-x"

Can we do this using sed or a combination of sed and awk ?

Any help would be appreciated. Thanks!


Report Offensive Message For Removal


Response Number 1
Name: Wolfbone
Date: September 13, 2004 at 05:45:04 Pacific
Subject: character replacement using sed/awk
Reply: (edit)

Heh! - I wouldn't bother sed or awk with this - they might feel insulted, get angry and blow up your computer. Better use tr '~' '-'


Report Offensive Follow Up For Removal

Response Number 2
Name: Wolfbone
Date: September 13, 2004 at 06:00:24 Pacific
Subject: character replacement using sed/awk
Reply: (edit)

Doh! - You meant only the ~ between " and ":

sed 's/\(.*".*\)~\(.*\)/\1-\2/'

should work.


Report Offensive Follow Up For Removal

Response Number 3
Name: Wolfbone
Date: September 13, 2004 at 06:22:26 Pacific
Subject: character replacement using sed/awk
Reply: (edit)

awk 'BEGIN {FS="\""; OFS="\""}; {for (i=2;i<=NF;i+=2) {sub("~","-",$i)}}; {print}'

if there's more than one substitution to be done in each line


Report Offensive Follow Up For Removal

Response Number 4
Name: Rohit
Date: September 13, 2004 at 19:56:35 Pacific
Subject: character replacement using sed/awk
Reply: (edit)

Thanks Wolfbone!
Is "sub" a valid awk command on Unix ?

File does have multiple ~ that need to be delimited.

Thanks!


Report Offensive Follow Up For Removal

Response Number 5
Name: Wolfbone
Date: September 13, 2004 at 22:16:01 Pacific
Subject: character replacement using sed/awk
Reply: (edit)

Is "sub" valid? - Not sure what you mean but it's not a GNU only extension. "gsub" is standard too, in case you also have more than one '~' in any field.


Report Offensive Follow Up For Removal







Use following form to reply to current message:

   Name: From My Computing.Net Settings
 E-Mail: From My Computing.Net Settings

Subject: character replacement using sed/awk

Comments:

 


  Homepage URL (*): 
Homepage Title (*): 
         Image URL: 
 
Data Recovery Software




How often do you use Computing.Net?

Every Day
Once a Week
Once a Month
This Is My First Time!


View Results

Poll Finishes In 4 Days.
Discuss in The Lounge