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.
# 8  
Old 02-18-2014
This is the result with the sample you gave us

Code:
root@maximus:/tmp# cat infile
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

root@maximus:/tmp# perl -0pe 's/,\n/,/g;s/\n,/,/g' infile
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

Which one are you using awk or perl? Which is your os?

--ahamed
# 9  
Old 02-18-2014
I tried all the commands, perl and awk in shell script in UNIX.
# 10  
Old 02-18-2014
Unless you post the actual data, it is difficult for us.
Which is your OS?

--ahamed
# 11  
Old 02-18-2014
This is the actual data in a csv file.

Code:
 
abcd,789756,20140211,20140202,464532.00,C,XZY,,,Settlement of purchase.,,1
abcd,795156,20140211,20140202,548962.52,C,JPY,,,Payement to: tokyo BNF=N,,1
abcd,763256,20140211,20140202,42188.80,C,USD,,,recieved from ,,1
abcd,756556,20140211,20140202,456898.28,C,EUR,,,Payment via.,,1
abcd,732656,20140211,20140202,58461.10,C,INR,,,Settlement of purchase.,,1
abcd,798756,20140211,20140202,323156.82,C,AUD,,,Settlement of purchase.,,1
abcd,789856,20140211,20140202,84621.63,C,CHF,,,Settlement of sale no B35453 EUR 471.60,,1
abcd,785456,20140211,20140202,86421.40,C,USD,,,Settlement of purchase.,,1

Some times the one or two records will have a next line character in between causing it to split into two lines like this

Code:
 
abcd,789756,20140211,20140202,464532.00,C,XZY,,,Settlement of purchase.,,1
abcd,795156,20140211,20140202,548962.52,C,JPY,,,Payement to: tokyo BNF=N,,1
abcd,763256,20140211,20140202,42188.80,C,USD,,,recieved from ,,1
abcd,756556,20140211,20140202,456898.28,C,EUR,,,Payment via.,,1
abcd,732656,20140211,20140202,
58461.10,C,INR,,,Settlement of purchase.,,1
abcd,798756,20140211,20140202,323156.82,C,AUD,,,Settlement of purchase.,,1
abcd,789856,20140211,20140202,84621.63,C,CHF,,,Settlement of sale no B35453 EUR 471.60,,1
abcd,785456,20140211,20140202,86421.40,C,USD,,,Settlement of purchase.,,1

I use windows OS.

---------- Post updated at 11:47 AM ---------- Previous update was at 11:45 AM ----------

If you see the 5 th record, it is split into 2.
This need to be auto corrected either in the same file or another file with the same file name as the original.
# 12  
Old 02-18-2014
Try this... this is only for the issue where the split record ends with a ,
if this works, we will check the next one...
Code:
awk '/,$/{printf $0;next}1' infile

You use cygwin? What is the version of awk?

--ahamed
# 13  
Old 02-18-2014
This didnt work as well!!

I;m using the command you suggested in a shell script file

Code:
 
awk '/,$/{printf $0;next}1' ${infile} >> ${outfile}

The outfile and infile are exactly the same.

Ahamed can you try something by removing the carriage return of lines having less than 12 records?
# 14  
Old 02-18-2014
Try this...

Code:
#!/bin/bash

incom=0
while read line
do
  if [ $incom -eq 1 ]; then
    incom=0
    printf "%s%s\n" "$data" "$line"
    data=""
    continue
  fi

  grep ",$" <<<$line >/dev/null 2>&1
  if [ $? -eq 0 ]; then
    incom=1
    data=$line
    continue
  fi
  echo $line
done < infile

If you still dont get the result, post the output with bash -x script infile

--ahamed

---------- Post updated at 10:57 PM ---------- Previous update was at 10:54 PM ----------

Also, can you post the output of od -bc infile
If you have the dos2unix utility I suggest you run that first on the file and then try the commands.

--ahamed
This User Gave Thanks to ahamed101 For This Post:
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