Visit Our UNIX and Linux User Community


Removal of comma(,) present inbetween double quotes(" ")


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Removal of comma(,) present inbetween double quotes(" ")
# 1  
Old 07-17-2009
Removal of comma(,) present inbetween double quotes(" ")

Hi Experts,

I have a file with some of the records contain double quotes. If I found a double quote(") in any particular record , I need to look for the next double quote in that particular record and in between these quotes, if any comma(,) is there I need to replace with Tilde (~) in the same file.

For Example:
Code:
123,abcd,FirstRecord
345,"abc,cde",SecondRecord
567,ghij,ThirdRecord
789,"klmn,opq",FourthRecord"
908,"zwec,ctu,kyz",FifthRecord

Output should be like this:
Code:
123,abcd,FirstRecord
345,"abc~cde",SecondRecord
567,ghij,ThirdRecord
789,"klmn~opq",FourthRecord
908,"zwec~ctu~kyz",FifthRecord

Can you please help in this scenarios in shell scripting

Last edited by Yogesh Sawant; 07-17-2009 at 06:56 AM.. Reason: added code tags
# 2  
Old 07-17-2009
Code:
perl -pe'
  s{("[^"]+")}{($x=$1)=~tr/,/~/;$x}ge
  '  infile

# 3  
Old 07-17-2009
Code:
sed 's/\(.*\".*\),\(.*\".*\)/\1~\2/' File_name.txt

# 4  
Old 07-17-2009
Using Awk

awk -F'"' 'BEGIN{OFS="\""}{gsub(",","~",$2);print}' file
# 5  
Old 07-17-2009
Panyam...

The script is working but as It is working for only one set of double quotes in one record....If it finds second second set of double quotes in the same record , it is ignoring the first one ...my requiremt is where ever commas(,) are present in double quotes should have to be replaced with Tilde(~).

For Example : Source File

Code:
123,abcd,FirstRecord
345,"abc,cde","Second,Record"
567,ghij,ThirdRecord
789,"klmn,opq",FourthRecord
908,"zwec,ctu,kyz",FifthRecord

your script is giving output:

Code:
123,abcd,FirstRecord
345,"abc,cde","Second~Record"
567,ghij,ThirdRecord
789,"klmn~opq",FourthRecord
908,"zwec,ctu~kyz",FifthRecord


But my target file should generate like below....

Code:
123,abcd,FirstRecord
345,"abc~cde","Second~Record"
567,ghij,ThirdRecord
789,"klmn~opq",FourthRecord
908,"zwec~ctu~kyz",FifthRecord

Can you please help in this scenarios in shell scripting.

Last edited by vgersh99; 07-17-2009 at 09:11 AM.. Reason: code tags, PLEASE!
# 6  
Old 07-17-2009
Hello vsairam,

radoulov solution works fine. But if you are looking for sed version, then here you go:

Code:
sed -e ':a' -e 's/\("[^"]*\),\([^"]*"\)/\1~\2/;ta' test.txt

# 7  
Old 07-17-2009
Hi radoulov/quintet,

Above script is working fine but when ever it finds second and third souble quotes, in between these quotes what ever the commas(,) present are replacing with Tilde (~).
But my requiremet has to replace the commas present in between double quotes [1,2], [3,4],etc...not inbetween double quotes [2,3]...

For example :

Source record:

345,"abc,cde","Second,Record"

your script is giving output as:

345,"abc~cde"~"Second~Record"

My requirement is

345,"abc~cde","Second~Record"


Please help in this scenario...

Previous Thread | Next Thread
Test Your Knowledge in Computers #405
Difficulty: Medium
Cygwin consists of three parts: a dynamic-link library (DLL) as an API compatibility layer in the form of a C standard library providing a substantial part of the POSIX API functionality, an extensive collection of software tools and applications that provide a Unix-like look and feel, and an MOTIF-based window manager.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk to parse comma separated field and removing comma in between number and double quotes

Hi Experts, Please support I have below data in file in comma seperated, but 4th column is containing comma in between numbers, bcz of which when i tried to parse the file the column 6th value(5049641141) is being removed from the file and value(222.82) in column 5 becoming value of column6. ... (3 Replies)
Discussion started by: as7951
3 Replies

2. Shell Programming and Scripting

Removal of multiple characters with in double quotes

For one of my need I was going through post "Removal of new line character in double quotes" Which alister has replied like $ cat data "leave me alone" "ABCD RENT-A- CAR XYZ LTD","00N0H","Enterprise Lake"," 100 View Way" $ sed -n 'H;g;/^*"*\("*"*\)*$/d; s/^\n//; y/\n/ /; p; s/.*//; h'... (9 Replies)
Discussion started by: Jag_1981
9 Replies

3. Shell Programming and Scripting

Removal of comma within double quotes

Hi All, I am getting .csv file whenever there is a comma present between a field that field get enclosed with double quotes For eg as below abc,123,xxyy,2178 fgh,123,"x,x"yy",2178 ghi,123,"x,xyy",2178 jkl,123,xx"yy,2178 whereas I want my data as per below abc,123,xxyy,2178... (1 Reply)
Discussion started by: H_bansal
1 Replies

4. Shell Programming and Scripting

Replacing double quotes with the unicodes "urgent!"

Hi, I have the following text in a file <div class="snippet abstract"> We present a new "model" for multiple-input-multiple-output (MIMO) 'outdoor' has many things "what" ever </div></a href=sdfkkf"> </div> <div class="snippet context"> I have to replace the string between the <div... (1 Reply)
Discussion started by: vms
1 Replies

5. Shell Programming and Scripting

awk print - fields separated with comma's need to ignore inbetween double quotes

I am trying to re-format a .csv file using awk. I have 6 fields in the .csv file. Some of the fields are enclosed in double quotes and contain comma's inside the quotes. awk is breaking this into multiple fields. Sample lines from the .csv file: Device Name,Personnel,Date,Solution... (1 Reply)
Discussion started by: jxrst
1 Replies

6. Shell Programming and Scripting

Expect scripting - How to match a double quotes " "

I am trying to match a text which contains the " ", from the log file. But it doesn't match. I understand that " " has got a special meaning to TCL/Expect. hence I tried the following, but no luck. expect -ex { "lp -c -demail -ot\\\"firstname_surname@gmail.com\\\"... (3 Replies)
Discussion started by: prakasuj
3 Replies

7. Shell Programming and Scripting

Substituting comma "," for dot "." in a specific column when comma"," is a delimiter

Hi, I'm dealing with an issue and losing a lot of hours figuring out how i would solve this. I have an input file which looks like this: ('BLABLA +200-GRS','Serviço ','TarifaçãoServiço','wap.bla.us.0000000121',2985,0,55,' de conversão em escada','Dia','Domingos') ('BLABLA +200-GRR','Serviço... (6 Replies)
Discussion started by: poliver
6 Replies

8. Shell Programming and Scripting

awk command to replace ";" with "|" and ""|" at diferent places in line of file

Hi, I have line in input file as below: 3G_CENTRAL;INDONESIA_(M)_TELKOMSEL;SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL My expected output for line in the file must be : "1-Radon1-cMOC_deg"|"LDIndex"|"3G_CENTRAL|INDONESIA_(M)_TELKOMSEL"|LAST|"SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL" Can someone... (7 Replies)
Discussion started by: shis100
7 Replies

9. Shell Programming and Scripting

Removal of new line character in double quotes

Hi, Could you please help me in removal of newline chracter present in between the double quotes and replacing it with space. For example ... Every field is wrapped with double quotes with comma delimiter, so I need to travese from first double quote occerence to till second double... (7 Replies)
Discussion started by: vsairam
7 Replies

10. Shell Programming and Scripting

comparing scalars contaning "DOUBLE QUOTES" as data

Hello to all, Does anyone know the solution ? Two strings A and B are present. I want to check whether B is a Substring of A. 1. The value of A is - 29 * * * /bin/ls "test" "tmp*" "log*" (Note: Pl note that A contains DOUBLEQUOTES, ASTERISK & FRONTSLASH) 2. The value of B is -... (5 Replies)
Discussion started by: rssrik
5 Replies

Featured Tech Videos