csv files (with quoted commas) and awk


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers csv files (with quoted commas) and awk
# 1  
Old 08-08-2007
csv files (with quoted commas) and awk

I have a file as follows:

Code:
1,"This is field 2",3,4,5
2,"This is field 2 it can contain one , comma",3,4,5
3,"This is field 2 it also, can, contain, more",3,4,5
4,"This is field 2 without extra commas",3,4,5


and i pass this through to awk:

Code:
            awk -F, ' {
                if ( $3 == "3" ) {
                    print $0
                }
            } ' file

The output I currently get is:

Code:
1,"This is field 2",3,4,5
4,"This is field 2 without extra commas",3,4,5

but in this instance all rows should display. So my question is:

How can i get awk to split the file on commas but ignore any commas when they are within double quotes (there could be more description fields than just the one, this is the first data extract we have done from Discovery).

Thanks
# 2  
Old 08-08-2007
Try this...

Code:
awk -F'"' '{
   line="";
   for (i=1; i<=NF; i++) {
      if (i != 2) line=line $i;
   }

   split(line, v, ",")
   if (v[3] == "3") {
      print;
   }
} ' file

...but I've the feeling that it can be done in a better and more elegant way Smilie
# 3  
Old 08-08-2007
hey Robo,

U want to display the bold lines also as o/p ,
1,"This is field 2",3,4,5
2,"This is field 2 it can contain one , comma",3,4,5
3,"This is field 2 it also, can, contain, more",3,4,5
4,"This is field 2 without extra commas",3,4,5

if the field 3 is of value 3 ???
# 4  
Old 08-08-2007
Robotronic's way works.. many thanks...

Basically we have an export from an application where description fields can contain any characters. Currently on the third column this is defined as enabled, if the value is 3 we keep the record, if anything else we disregard it. As in my initial example if i just did a test on the third field in awk (using -F, as the delimeter) then in row 2 the third field would be "comma", in 3 it would be "can". So would get excluded when they should be included.
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to remove unwanted commas from a .csv file?

how to remove unwanted commas from a .csv file Input file format "Server1","server-PRI-Windows","PRI-VC01","Microsoft Windows Server 2012, (64-bit)","Powered On","1,696.12","server-GEN-SFCHT2-VMS-R013,server-GEN-SFCHT2-VMS-R031,server-GEN-SFCHT2-VMS-R023"... (5 Replies)
Discussion started by: ranjancom2000
5 Replies

2. UNIX for Beginners Questions & Answers

Removing commas from CSV file

Hi I'm creating a sh script to generate a csv file. The CSV contains the values from a sql table. The content looks this: a,b,c,c2,c3,,,,,,,,,,,d,e I have some code that can separate the fields using the comma as delimiter, but some values actually contain commas, such as... (2 Replies)
Discussion started by: preema
2 Replies

3. Shell Programming and Scripting

How to delete the commas in a .CSV file that are enclosed in a string with double quotes?

Okay, I would like to delete all the commas in a .CSV file (TEST.CSV) or at least substitute them with empty space, that are enclosed in double quote. Please see the sample file as below: column 1,column 2,column 3,column 4,column 5,column 6,column 7,column 8,column 9,column 10... (8 Replies)
Discussion started by: dhruuv369
8 Replies

4. Shell Programming and Scripting

HELP with AWK or SED. Need to replace the commas between double quotes in CSV file

Hello experts, I need to validate a csv file which contains data like this: Sample.csv "ABCD","I",23,0,9,,"23/12/2012","OK","Street,State, 91135",0 "ABCD","I",23,0,9,,"23/12/2012","OK","Street,State, 91135",0 I just need to check if all the records contain exactly the number of... (5 Replies)
Discussion started by: shell_boy23
5 Replies

5. UNIX for Dummies Questions & Answers

To Add extra commas to a CSV file.

Hi All, I got this requirement to process a complex CSV file. Eg File. Line 1: Name:,XYz Line 2: Age:,15 Line 3: Grade:,7 Line 4: Line 5: English, Maths, Science,Spanish Line 6:10,11,13,14 As you can see the maximum column is 4 . The file i need to make is Line 1: Name:,XYz,,... (12 Replies)
Discussion started by: chillblue
12 Replies

6. UNIX for Dummies Questions & Answers

To Add extra commas to a CSV file using 2 files...

Hi , Based on my previous requirement the code works fine for comma as delimiter. Now my Req is widened up a bit .. There will be two set of files .. one with comma as delimiter and other with semi-colon ; as delimiter. Second Sample file. With Double Quotes (Semi-Colon... (1 Reply)
Discussion started by: chillblue
1 Replies

7. Shell Programming and Scripting

Adding Extra Commas to a CSV file

Trying in this forum. Not sure if it is permitted.... but in need of help. Please find the requirements in the below link. https://www.unix.com/unix-dummies-questions-answers/191503-add-extra-commas-csv-file-2.html#post302665179 Thanks in Advance. (1 Reply)
Discussion started by: chillblue
1 Replies

8. Shell Programming and Scripting

shell script to remove extra commas from CSV outp file

Name,,,,,,,,,,,,,,,,,,,,Domain,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Contact,Phone,Email,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Location -----------------------,------------------------------------------------,-------,-----,---------------------------------,------------------------------------ ----... (1 Reply)
Discussion started by: sreenath1037
1 Replies

9. Shell Programming and Scripting

Remove duplicate commas after exporting excel file to csv

Hello everyone I'm new here and this is my first post so first of all I want to say that this is a great forum and I have managed to found most of my answers in these forums : ) So with that I ask you my first question: I have an excel file which I saved as a csv. However the excel file... (3 Replies)
Discussion started by: Spunkerspawn
3 Replies

10. Shell Programming and Scripting

replacing commas with tilde in csv file.

hello all, i have a comma delimited file. i want to replace the commas in the file with the tilde symbol using sed. how can i do this? thanks. (4 Replies)
Discussion started by: femig
4 Replies
Login or Register to Ask a Question