Auto correct a csv file using UNIX shell script.


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Auto correct a csv file using UNIX shell script.
# 1  
Old 02-15-2014
Auto correct a csv file using UNIX shell script.

Hi All,

There are list of 4-5 .csv files which has 12 columns.In some cases one of the record is split into 2 records. What needs to be done is this split record has to be auto corrected and placed in the csv file.

Eg:

Let us consider sample.csv file and in normal conditions the file would like below.

Code:
a,b,c,d,g,h,i,j,k,l,m,n
a,b,c,d,g,h,i,j,k,l,m,n
a,b,c,d,g,h,i,j,k,l,m,n
a,b,c,d,g,h,i,j,k,l,m,n

In some cases the sample.csv file would look like

Code:
a,b,c,d,g,h,i,j,k,l,m,n
a,b,c,d,g,h,
i,j,k,l,m,n
a,b,c,d,g,h,i,j,k,l,m,n
a,b,c,d,g,h,i,j,k,l,m,n

Code:
a,b,c,d,g,h,i,j,k,l,m,n
a,b,c,d,g,h
,i,j,k,l,m,n
a,b,c,d,g,h,i,j,k,l,m,n
a,b,c,d,g,h,i,j,k,l,m,n

If you see the line 2,3 the record is broken. It should be a single record.


How to identify the broken records?
How can we correct the file to look like the normal sample.csv file written earlier?


Thanks,
Karthik
# 2  
Old 02-15-2014
If line are only broken in two and not more, you could try something like this:
Code:
awk 'NF<12{getline p; $0=$0 p}1' FS=, OFS=, file

# 3  
Old 02-15-2014
This should fix the file even if lines are broken into more than two lines:
Code:
perl -0pe 's/,\n/,/g;s/\n,/,/g' file

# 4  
Old 02-15-2014
True, unless there are empty fields in the first or last position, like
Code:
a,b,c,d,g,h,i,j,k,l,m,n
a,b,c,d,g,h,
i,j,k,l,m,n
a,b,c,d,g,h,i,j,k,l,m,
,b,c,d,g,h,i,j,k,l,m,n

--edit--
This may also work for multiple lines and cases of empty fields, if we know it should always be exactly 12 fields per line:
Code:
awk '{while(NF<12){getline p; $0=$0 p}}1' FS=, OFS=, file


Last edited by Scrutinizer; 02-15-2014 at 11:07 AM..
# 5  
Old 02-18-2014
I tried the codes which you guys gave. None of them work, all they do is just write the recrods as it is.
# 6  
Old 02-18-2014
All of that works for me.
Hope you are aware that these don't edit the original file, rather output it into the screen, right?

Post the sample of the actual file and the code you have used for us to help you.

--ahamed
# 7  
Old 02-18-2014
Yes yes i'm aware that these dont edit the orignal file.

All i'm doing is redirecting the output of these commands into another file.

I cant get the actual code. But it is exactly the same as the sample code i mentioned. It has 12 columns, separated by a comma.
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 auto correct a failing command?

If a command is not found, e.g. nawk, this is how I fix the problem ] && NAWK=/usr/bin/gawk ] && NAWK=/usr/bin/nawk ] && NAWK=/usr/bin/awkI use $NAWK an the set the appropriate value based on the system it runs. How can I implement a similar fix for a command found but illegal argument.... (6 Replies)
Discussion started by: mohtashims
6 Replies

2. UNIX for Beginners Questions & Answers

How to zip csv files having specific pattern in a directory using UNIX shell script?

I have files in a Linux directory . Some of the file is listed below -rw-rw-r--. 1 roots roots 0 Dec 23 02:17 zzz_123_00000_A_1.csv -rw-rw-r--. 1 roots roots 0 Dec 23 02:18 zzz_121_00000_A_2.csv -rw-rw-r--. 1 roots roots 0 Dec 23 02:18 zzz_124_00000_A_3.csv drwxrwxr-x. 2 roots roots 6 Dec 23... (4 Replies)
Discussion started by: Balraj
4 Replies

3. Shell Programming and Scripting

Help with Shell Scrip in Masking particular columns in .csv file or .txt file using shell script

Hello Unix Shell Script Experts, I have a script that would mask the columns in .csv file or .txt file. First the script will untar the .zip files from Archive folder and processes into work folder and finally pushes the masked .csv files into Feed folder. Two parameters are passed ... (5 Replies)
Discussion started by: Mahesh G
5 Replies

4. Shell Programming and Scripting

Read csv file, convert the data and make one text file in UNIX shell scripting

I have input data looks like this which is a part of a csv file 7,1265,76548,"0102:04" 8,1266,76545,"0112:04" I need to make the output data should look like this and the output data will be part of text file: 7|1265000 |7654899 |A| 8|12660000 |76545999 |B| The logic behind the... (6 Replies)
Discussion started by: RJG
6 Replies

5. Post Here to Contact Site Administrators and Moderators

Auto correct a csv file using UNIX shell script.

Hi All, There are list of 4-5 .csv files which has 12 columns.In some cases one of the record is split into 2 records. What needs to be done is this split record has to be auto corrected and placed in the csv file. Eg: Let us consider sample.csv file and in normal conditions the file... (1 Reply)
Discussion started by: karthik_ak
1 Replies

6. UNIX for Dummies Questions & Answers

Help to parse csv file with shell script

Hello ! I am very aware that this is not the first time this question is asked here, because I have already read a lot of previous answers, but none of them worked, so... As said in the title, I want to read a csv file with a bash script. Here is a sample of the file: ... (4 Replies)
Discussion started by: Grhyll
4 Replies

7. Shell Programming and Scripting

Exporting data as a CSV file from Unix shell script

Friends...This is the first time i am trying the report generation using shell script... any suggestions are welcome. Is there a way to set the font size & color when i am exporting the data from unix shell script as a CSV file ? The following sample data is saved as a .csv file in the... (2 Replies)
Discussion started by: appu2176
2 Replies

8. Shell Programming and Scripting

how to create csv file using shell script

I have a file in multiple directory which has some records in the following format File: a/latest.txt , b/latest.txt, c/latest.txt -> Name=Jhon Age=27 Gender=M Street=LA Road Occupation=Service I want to generate a csv file from the above file as follows File: output.csv -> ... (9 Replies)
Discussion started by: rjk2504
9 Replies

9. UNIX for Advanced & Expert Users

Unix Shell Script with output to CSV File

Hi, I have a unix shell script that is outputting results from an SQL query to a *.csv file, using utl_file.put_line. The resulting file is then sent out via e-mail as a mail attachment. The issue I have is that when the mailed attachment is opened in Excel the first column is shown as... (1 Reply)
Discussion started by: heather.morton@
1 Replies

10. Shell Programming and Scripting

Modifying a csv file from Shell Script

Hi all, I have some script that creates a temp csv file. What I need to do is do some search and replace and modify the file from my shell script. I know the commands to open the file and then apply the reg ex but wasnt sure how I could do this from a script and modify the file? Any help... (2 Replies)
Discussion started by: not4google
2 Replies
Login or Register to Ask a Question