Replace multiple blanks within double quotes


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Replace multiple blanks within double quotes
# 1  
Old 07-11-2008
Replace multiple blanks within double quotes

I have various column names within double quotes, separated by commas.
Example:

"column one", "column number two", "this is column number three", anothercolumn, yetanothercolumn

I need to eliminate the double quotes and replace the blanks within the double quotes by underscores, giving:

column_one, column_number_two, this_is_column_number_three, anothercolumn, yetanothercolumn

Any occurrence of a double quoted string containing no blanks must remain untouched:

ex. "freddy" --> "freddy"


I have tried using sed but my results suggest that sed's 'greedy parsing' is getting in the way. Because of this, I had to repeatedly execute my sed script to get the desired result.

Thanks
JG
# 2  
Old 07-11-2008
Hammer & Screwdriver ok, perhaps a little strange, but appears to work

Code:
> cat inf
"column one", "column number two", "this is column number three", anothercolumn, yetanothercolumn

> cat inf | sed "s/, /,~/g" | tr " " "_" | sed "s/,~/, /g" | sed "s/\"//g"
column_one, column_number_two, this_is_column_number_three, anothercolumn, yetanothercolumn

Note that I changed the ", " to ",~" and then back again later. This was so I wouldn't delete that space character.
# 3  
Old 07-11-2008
sed only
Code:
sed 's/", "/~/g;s/ /_/g;s/~/", "/g' file

# 4  
Old 07-11-2008
The requirement regarding leaving double quotes around a field if there is no space is the difficult part. Try the following and please report back on how it worked out. I am sure there is a more efficient way of doing the work but this should work for you.

Code:
sed -e 's/",[^"]*"/,/g' -e 's/^"//' -e 's/"$//' -e 's/ /_/g' \
    -e 's/^\([^_]*\),/"\1",/g' -e 's/,\([^_]*\)$/,"\1"/g' -e 's/,\([^_]*\),/,"\1",/g' file

# 5  
Old 07-14-2008
Hi,

Try this script, hope it helps you

Code:
tr "," "\n" < inp.txt > temp1.txt
sed -e '/ /s/^\"//g;/ /s/\"$//g' -e 's/ /_/g' temp1.txt > temp2.txt
paste -sd, temp2.txt
rm temp1.txt temp2.txt

Regards,
Chella
# 6  
Old 07-14-2008
Replace multiple blanks within double quotes

Thanks all for your responses. I will try these in a real-world scenario and report back.

Many thanks for your help

JG
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

sed command to replace consecutive double quotes

I need to replace consecutive double quotes in a csv file, the data in the file is enclosed in double quotes but there are some places where the quotes are repeating Example is below Incoming data is : "Pacific Region"|"PNG"|"Jimmy""|""| Need output as: "Pacific... (10 Replies)
Discussion started by: abhilashnair
10 Replies

2. Shell Programming and Scripting

Replace Double quotes within double quotes in a column with space while loading a CSV file

Hi All, I'm unable to load the data using sql loader where there are double quotes within the double quotes As these are optionally enclosed by double quotes. Sample Data : "221100",138.00,"D","0019/1477","44012075","49938","49938/15043000","Television - 22" Refurbished - Airwave","Supply... (6 Replies)
Discussion started by: mlavanya
6 Replies

3. Shell Programming and Scripting

awk to find and replace Double quotes between pipes

Hello, Need a AWK command to find and replace Double Quotes in Pipe delimited files Actully its a CSV file converted to Pipe but the double quotes still exists. So i want to Get rid of them. Example Input 1|2|3|sadsad|"Abc Efg 3"""|dada Output 1|2|3|sadsad|Abc Efg 3"|dada Thanks... (5 Replies)
Discussion started by: krux_rap
5 Replies

4. Shell Programming and Scripting

Replace double quotes with a single quote within a double quoted string

Hi Froum. I have tried in vain to find a solution for this problem - I'm trying to replace any double quotes within a quoted string with a single quote, leaving everything else as is. I have the following data: Before: ... (32 Replies)
Discussion started by: pchang
32 Replies

5. Shell Programming and Scripting

Replace newline character between a double quotes to a space

Hi Guys, I have a file with content as below aj.txt "Iam allfine" abcdef abcd "all is not well" What I'm trying to say is my data has some new line characters in between quoted text. I must get ride of the newline character that comes in between the quoted text. output must be:... (8 Replies)
Discussion started by: ajahuja
8 Replies

6. Shell Programming and Scripting

How to replace spaces excluding those within double quotes and after backslash?

In bash or perl, I would like to know how to substitute a null character (0x00) for every white space without changing the white spaces inside the block of double quotes and the white space immediately following a backslash. Suppose that sample.txt consists of the following line. "b 1" c\ 2 ... (2 Replies)
Discussion started by: LessNux
2 Replies

7. Shell Programming and Scripting

Replace double double quotes using AWK/SED

Hi, I have data as "01/22/97-"aaaaaaaaaaaaaaaaa""aaa""aabbbbbbbbcccccc""zbcd""dddddddddeeeeeeeeefffffff" I want to remove only the Consequitive double quotes and not the one which occurs single. My O/P must be ... (2 Replies)
Discussion started by: Bhuvaneswari
2 Replies

8. UNIX for Dummies Questions & Answers

How to replace double quotes in to ascii value?

Hi, I am getting the data from text file and it contains comma and double quootes. Eg: text file like this: Travelling up Cattai Ridge Rd, going through the "S" bends at the top. Felt a "pull" and pain in groin area, on right side after lifting at work. Repeat "twisting" while working manual... (4 Replies)
Discussion started by: rajesh4851
4 Replies

9. Shell Programming and Scripting

Multiple double quotes

hi Need to run below command on remote server: cmd -a "1 2" -b 3 If i run below, there's clash matching double quotes and fail. ssh $server "cmd -a "1 2" -b 3" I have few ideas which worked (like keeping the entire cmd in a file and copy it to remote server and then run that file)... (1 Reply)
Discussion started by: reddyr
1 Replies

10. Shell Programming and Scripting

To Replace comma with Pipe inside double quotes

Hi, I have a requirement to replace the comma's inside the double quotes. The comma's inside the double quotes will get changed dynamically. Input Record: "Washington, DC,Prabhu,aju",New York Output Record: "Washington| DC|Prabhu|aju",New York I tried with the below command but it... (3 Replies)
Discussion started by: prabhutkl
3 Replies
Login or Register to Ask a Question