Read Two lines in a CSV File and Compare


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Read Two lines in a CSV File and Compare
# 1  
Old 05-02-2010
Read Two lines in a CSV File and Compare

Hi ,
I have a CSV file ( file.csv) with some data as
below:
A,1,abc,x,y,z,,xyz,20100101,99991231
A,1,abc,x,y,z,234,xyz,20100101,99991231
I have to delete the duplicate line based on
unique identifiers which are values in the
fields- 2,3,4,8.These coulmns in both the rows
have same value. I have delete the one that
does not have any value in 7th column.
Please help.

Thanks,
Sheel
# 2  
Old 05-03-2010
Try this if i get you correctly...

Code:
awk -F, '$7 && !dup[$2$3$4$8]++' infile

# 3  
Old 05-03-2010
Quote:
Originally Posted by malcomex999
Try this if i get you correctly...

Code:
awk -F, '$7 && !dup[$2$3$4$8]++' infile

Smilie Well done !

I suggest a little modification for a more secure result :
Code:
awk -F, '$7 && !dup[$2,$3,$4,$8]++' infile

Jean-Pierre.
# 4  
Old 05-03-2010
Quote:
Originally Posted by aigles
Smilie Well done !

I suggest a little modification for a more secure result :
Code:
awk -F, '$7 && !dup[$2,$3,$4,$8]++' infile

Jean-Pierre.
I was just curious what difference will that make? Smilie
# 5  
Old 05-03-2010
Quote:
Originally Posted by malcomex999
I was just curious what difference will that make? Smilie
An example :
Code:
A,1,abc,x,y,z,,xyz,20100101,99991231
A,1,ab,cx,y,z,234,xyz,20100101,99991231

With your solution the 2 lines have the same key 1abcxxyz
Using subsranges gives different keys for the two lines 1,abc,x,wyz and 1,ab,cx,xyz (where , is SUBSEP).

Jean-Pierre.
# 6  
Old 05-04-2010
MySQL

Code:
[root@sistem1lnx ~]# cat file
A,1,abc,x,y,z,,xyz,20100101,99991231
A,1,abc,x,y,z,1,xyz,20100101,99991231
A,1,abc,x,y,z,234,xyz,20100101,99991231
A,1,abc,x,y,z,a,xyz,20100101,99991231
A,1,abc,x,y,z,,xyz,20100101,99991231

Code:
[root@sistem1lnx ~]# ./allx
RESULTS
---------
A 1 abc x y z 1 xyz 20100101 99991231
A 1 abc x y z 234 xyz 20100101 99991231
A 1 abc x y z a xyz 20100101 99991231

Code:
 
oifs=$IFS
#Values
var=0
COUNT=2 # for result
 
while IFS=, read -r one two three four five six seven eight nine ten
      do
              while IFS=, read -r onee twoo threee fourr fivee sixx sevenn eightt ninee tenn
                  do
                      if [ "${two}" == "${twoo}" ] && [ "${three}" == "${threee}" ] && 
[ "${four}" == "${fourr}" ] && [ "${eight}" == "${eightt}" ] ; then
                            if [ "${one}" == "${onee}" ] && [ "${five}" == "${fivee}" ] && [ "${six}" == "${sixx}" ] && 
[ "${seven}" == "${sevenn}" ] && [ "${nine}" == "${ninee}" ] && [ "${ten}" == "${tenn}" ] ; then
                                 itself=ok
                                      else
                                         itself=notok
                                            if [ "${sevenn}" == "" ] ; then
                                                         ((++var))
                                            fi
                          fi
                      fi
                   done < file
 
while [ $(( COUNT -= 1 )) -gt 0 ]
          do
             echo "RESULTS"
             echo "-----------------------------------"
          done
 
    if [ $var -gt 0 ] && [ "$itself" == "notok" ]; then
                    echo ${one} ${two} ${three} ${four} ${five} ${six} ${seven} ${eight} ${nine} ${ten}
    fi
 
var=0
 
   done < file
IFS=$oifs

# 7  
Old 05-05-2010
MySQL Read Two lines in a CSV File and Compare

@malcomex999/Jean
Thank You both for the help . The logic is working fine and i have been able to do what i wanted.

Code:
awk -F, '$7 && !dup[$2,$3,$4,$8]++' infile

But I would like to understand the logic behind -F operation. How does the deletion happen here? What is the logic behind choosing the row to be deleted?

Can i use more than one field to decide the line to be deleted.If yes, how?

@ygemici
Thnx for the code. I have not been able to implement the logic till now. Will surely get back to you after using it.

Cheers,Smilie
Sheel

Last edited by Scott; 05-05-2010 at 01:27 PM.. Reason: Code tags
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Convert a horizontal lines to vertical lines in a csv file

Hi.. I need some help in converting the below horizontal lines to vertical lines format. can anyone help me on this. input file Hour,1,2,3,4,5 90RT,106,111,111,112,111 output file Hour,90RT 1,106 2,111 3,111 4,112 5,111 (3 Replies)
Discussion started by: Raghuram717
3 Replies

2. UNIX for Beginners Questions & Answers

Compare every column from one csv file to another csv file

1.csv contains following column- Empid code loc port 101 A xy 01 102 B zx 78 103 A cg 12 104 G xy 78 2.csv contains follwing data- Empid code loc port 101 A gf 01 102 B zx 78 103 C cg 32 104 ... (1 Reply)
Discussion started by: rishabh
1 Replies

3. Shell Programming and Scripting

Compare 2 files of csv file and match column data and create a new csv file of them

Hi, I am newbie in shell script. I need your help to solve my problem. Firstly, I have 2 files of csv and i want to compare of the contents then the output will be written in a new csv file. File1: SourceFile,DateTimeOriginal /home/intannf/foto/IMG_0713.JPG,2015:02:17 11:14:07... (8 Replies)
Discussion started by: refrain
8 Replies

4. Shell Programming and Scripting

How to compare two lines in a csv file using shell script?

I have a file lets say input.csv having two columns like- Name,Mobile No A,111 B,222 A,333 A,123 B,213 I would like to find result in a new file lets say output.csv as- Name,Mobile No A,111 B,222 means short the file on the basis of first column and first value corresponding to the... (5 Replies)
Discussion started by: Ashish Singhal
5 Replies

5. Shell Programming and Scripting

Compare 2 csv files in ksh and o/p the difference in a new csv file

(say) I have 2 csv files - file1.csv & file2.csv as mentioned below: file1.csv ID,version,cost 1000,1,30 2000,2,40 3000,3,50 4000,4,60 file2.csv ID,version,cost 1000,1,30 2000,2,45 3000,4,55 6000,5,70 The... (7 Replies)
Discussion started by: Naresh101
7 Replies

6. Shell Programming and Scripting

Match list of strings in File A and compare with File B, C and write to a output file in CSV format

Hi Friends, I'm a great fan of this forum... it has helped me tone my skills in shell scripting. I have a challenge here, which I'm sure you guys would help me in achieving... File A has a list of job ids and I need to compare this with the File B (*.log) and File C (extend *.log) and copy... (6 Replies)
Discussion started by: asnandhakumar
6 Replies

7. Shell Programming and Scripting

Re: Read lines and compare in a loop

I have a file which has following content: NAME=ora.DG1.dg TYPE=ora.diskgroup.type TARGET=ONLINE STATE=ONLINE NAME=ora.DG2.dg TYPE=ora.diskgroup.type TARGET=ONLINE STATE=ONLINE NAME=ora.DG3.dg TYPE=ora.diskgroup.type TARGET=ONLINE STATE=ONLINE NAME=ora.DG4.dg... (7 Replies)
Discussion started by: rcc50886
7 Replies

8. UNIX for Dummies Questions & Answers

When reading a csv file, counter to read 20 lines and wait for minute then read next 20 till end

Hello All, i am a newbie and need some help when reading a csv file in a bourne shell script. I want to read 10 lines, then wait for a minute and then do a reading of another 10 lines and so on in the same way. I want to do this till the end of file. Any inputs are appreciated ... (3 Replies)
Discussion started by: victor.s
3 Replies

9. Shell Programming and Scripting

need to read lines in file and compare value in if not working

Hello, I have this file that sometime contains 0 lines and sometimes 1 or more. It's supposed to then put the result (could be 0 or 1 or 2 or more) into a variable. Then it's supposed to echo using an if else statement depending on the value of the variable. flagvar='wc -l $tempfile |... (1 Reply)
Discussion started by: script_op2a
1 Replies

10. Shell Programming and Scripting

Need to compare two csv files values and write into another csv file

Hi all, Am new to scripting. So i just need your ideas to help me out. Here goes my requirement. I have two csv files 1.csv 2.csv abc,1.24 abc,1 def,2.13 def,1 I need to compare the first column of 1.csv with 2.csv and if matches then need to compare... (2 Replies)
Discussion started by: chinnahyd
2 Replies
Login or Register to Ask a Question