need to remove duplicates based on key in first column and pattern in last column


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting need to remove duplicates based on key in first column and pattern in last column
# 8  
Old 09-01-2010
Quote:
Originally Posted by script_op2a
Is there a reason to have a[4]a[5] , why not just use a[4] and then awk doesn't even have to remove anything?
Using both allows the timestamp to be used in determining the most recent entry which would be necessary should two entries have the same date.
# 9  
Old 11-23-2010
Hello,

Could anyone help me modify this script to output 1 file containing the unwanted duplicates and the other containing just the desired records?
# 10  
Old 11-23-2010
a simple solution, base on previous script.

Code:
awk '{split($4,a,"_"); if (b[$1]<=a[4]a[5]) {b[$1]=a[4]a[5];c[$1]=$0}}
END{for (i in b) print c[i]}' infile  |sort > desired_records

sort infile > temp2

diff desired_records temp2 |awk '/^>/ {$1="";print}'> unwanted_duplicates_records

This User Gave Thanks to rdcwayx For This Post:
# 11  
Old 11-24-2010
Code:
sort -t_ -k1,1 -k4rn < infile | awk -F_ 'NF{if(A[$1,$2,$3]++)print>"dups.out";else print}' > recs.out

# 12  
Old 11-24-2010
Quote:
Originally Posted by rdcwayx
a simple solution, base on previous script.

Code:
awk '{split($4,a,"_"); if (b[$1]<=a[4]a[5]) {b[$1]=a[4]a[5];c[$1]=$0}}
END{for (i in b) print c[i]}' infile  |sort > desired_records

sort infile > temp2

diff desired_records temp2 |awk '/^>/ {$1="";print}'> unwanted_duplicates_records

This almost works. The only problem is that it puts a blank space in front of every line in the
Code:
unwanted_duplicates_records

file.

Is there any way we can fix this?
# 13  
Old 11-24-2010
Code:
diff desired_records temp2 |awk '/^>/ {$1="";print}'|sed 's/^ //' > unwanted_duplicates_records

# 14  
Old 05-18-2011
This is what I finally used:

Code:
diff $outfile $temp_sort_file |awk '/^>/ {print $0}'|sed 's/^> //' > $temp_dups_file

It works with most of my files.

I'm trying to understand it.

What is the awk part doing exactly? What is
Code:
^>

?

And what is the sed part doing? What is
Code:
's/^> //'

?
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Remove duplicates according to their frequency in column

Hi all, I have huge a tab-delimited file with the following format and I want to remove the duplicates according to their frequency based on Column2 and Column3. Column1 Column2 Column3 Column4 Column5 Column6 Column7 1 user1 access1 word word 3 2 2 user2 access2 ... (10 Replies)
Discussion started by: corfuitl
10 Replies

2. Shell Programming and Scripting

Remove Duplicates on multiple Key Columns and get the Latest Record from Date/Time Column

Hi Experts , we have a CDC file where we need to get the latest record of the Key columns Key Columns will be CDC_FLAG and SRC_PMTN_I and fetch the latest record from the CDC_PRCS_TS Can we do it with a single awk command. Please help.... (3 Replies)
Discussion started by: vijaykodukula
3 Replies

3. Shell Programming and Scripting

Remove duplicates within row and separate column

Hi all I have following kind of input file ESR1 PA156 leflunomide PA450192 leflunomide CHST3 PA26503 docetaxel Pa4586; thalidomide Pa34958; decetaxel docetaxel docetaxel I want to remove duplicates and I want to separate anything before and after PAxxxx entry into columns or... (1 Reply)
Discussion started by: manigrover
1 Replies

4. Shell Programming and Scripting

Request to check:remove duplicates only in first column

Hi all, I have an input file like this Now I have to remove duplicates only in first column and nothing has to be changed in second and third column. so that output would be Please let me know scripting regarding this (20 Replies)
Discussion started by: manigrover
20 Replies

5. Shell Programming and Scripting

remove duplicates based on single column

Hello, I am new to shell scripting. I have a huge file with multiple columns for example: I have 5 columns below. HWUSI-EAS000_29:1:105 + chr5 76654650 AATTGGAA HHHHG HWUSI-EAS000_29:1:106 + chr5 76654650 AATTGGAA B@HYL HWUSI-EAS000_29:1:108 + ... (4 Replies)
Discussion started by: Diya123
4 Replies

6. Shell Programming and Scripting

Remove duplicates based on the two key columns

Hi All, I needs to fetch unique records based on a keycolumn(ie., first column1) and also I needs to get the records which are having max value on column2 in sorted manner... and duplicates have to store in another output file. Input : Input.txt 1234,0,x 1234,1,y 5678,10,z 9999,10,k... (7 Replies)
Discussion started by: kmsekhar
7 Replies

7. UNIX for Dummies Questions & Answers

Remove duplicates based on a column in fixed width file

Hi, How to output the duplicate record to another file. We say the record is duplicate based on a column whose position is from 2 and its length is 11 characters. The file is a fixed width file. ex of Record: DTYU12333567opert tjhi kkklTRG9012 The data in bold is the key on which... (1 Reply)
Discussion started by: Qwerty123
1 Replies

8. Shell Programming and Scripting

How can i delete the duplicates based on one column of a line

I have my data something like this (08/03/2009 22:57:42.414)(:) king aaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbb (08/03/2009 22:57:42.416)(:) John cccccccccccc cccccvssssssssss baaaaa (08/03/2009 22:57:42.417)(:) Michael ddddddd tststststtststts (08/03/2009 22:57:42.425)(:) Ravi... (11 Replies)
Discussion started by: rdhanek
11 Replies

9. Shell Programming and Scripting

joining files based on key column

Hi I have to join two files based on 1st column where 4th column of a2.txt=at and take 2nd column of a1.txt and 3rd column of a2.txt and check against source files ,if matches list those source file names. a1.txt a1|20090809|20090810 a2|20090907|20090908 a2.txt a1|d|file1.txt|at... (9 Replies)
Discussion started by: akil
9 Replies
Login or Register to Ask a Question