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.
# 15  
Old 02-18-2014
Since you're running on Windows, it may be that your input file's lines are terminated by a carriage return character and a newline character. Since awk is expecting just newline as the line terminator, the search for a comma at the end of a line fails because there is a carriage return character following the comma. To verify this, show us the first few lines of output from:
Code:
od -bc Your_Input_File

Assuming that output contains some sequences like \r (indicating carriage return characters), try the following:
Code:
awk '{gsub(/\r/, "")}/,$/{printf("%s",$0);next}1' Your_Input_File > Your_Output_File

or, if your output file has to have carriage return and newline terminators:
Code:
awk '{gsub(/\r/, "")}/,$/{printf("%s",$0);next}{printf("%s\r\n", $0)}' Your_Input_File > Your_Output_File

This User Gave Thanks to Don Cragun For This Post:
# 16  
Old 02-18-2014
There are also (single) quoting issues with awk on Windows, I seem to recall. He may need to run it as
Code:
awk "{while(NF<12){getline p; \$0=\$0 p}}1" FS=, OFS=, file

or something or put the script in a file.....
This User Gave Thanks to Scrutinizer For This Post:
# 17  
Old 02-18-2014
Thanks a lot Ahamed.

I used the below to autocorrect and it worked Smilie

Code:
 
perl -pi -e 's/,\r+\n//g;s/\n,/,/g' ' infile.


I have few more queries

below is the description of what i'm working on.

>There will be a directory with more than 5+ .csv files
> One or more files will sometimes have this issue

What needs to be done is
> I dont what to overwrite in the original file.
>I want to retain the original file.

how to proceed?

Thanks,
Karthik
# 18  
Old 02-18-2014
This is the reason why we ask to post the OS details in the first place.

For your second query, remove the -i option and redirect it to another file or

Code:
perl -pi.orig -e 's/,\r+\n//g;s/\n,/,/g' infile

which will create a backup file with extension .orig

--ahamed
# 19  
Old 02-18-2014
But the problem is what if the broken line is like this where the it is starting with a comma(,) like this?
Code:
 
 
abcd,732656,20140211,20140202,58461.10
,C,INR,,,Settlement of purchase.,,1

This code wont work in such cases.

How to modify the code to work in both cases?
# 20  
Old 02-18-2014
You need to similarly modify the second statement after ;

--ahamed
# 21  
Old 02-18-2014
how?
Sorry i'm very new to unix!!
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