Uniq based on first field


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Uniq based on first field
# 1  
Old 07-14-2011
Uniq based on first field

Hi New to unix.
I want to display only the unrepeated lines from a file using first field.

Ex:
Code:
1234 uname1 status1
1235 uname2 status2
1234 uname3 status3
1236 uname5 status5

I used
Code:
sort filename | uniq -u

output:
Code:
1234 uname1 status1
1235 uname2 status2
1234 uname3 status3
1236 uname5 status5


but here uniqness is happening based on all fields.

I want the output like this.
Code:
1235 uname2 status2
1236 uname5 status5

want to remove repeated lines using first field only.

I tried a lot but unable to find solution. Anybody please help me out...

Last edited by Franklin52; 07-14-2011 at 03:22 AM.. Reason: Please use code tags for code and data samples, thank you
# 2  
Old 07-14-2011
Code:
 
$ for i in `nawk '{print $1}' test`; do count=`grep -c $i test`; [ "$count" -gt "1" ] || grep $i test; done                                        
1235 uname2 status2
1236 uname5 status5

$ cat test
1234 uname1 status1
1235 uname2 status2
1234 uname3 status3
1236 uname5 status5

This User Gave Thanks to itkamaraj For This Post:
# 3  
Old 07-14-2011
Code:
awk 'NR==FNR{a[$1]++; next} a[$1]==1 ' infile infile

This User Gave Thanks to rdcwayx For This Post:
# 4  
Old 07-14-2011
Thanks to itkamaraj and rdcwayx for prompt reply.

@rdcwayx
Could you please explain the code how it works?
and If my file have , as separator[.csv file] then where I have to change the code?

ex:
1234,uname1,status1
1235,uname2,status2
1234,uname3,status3
1236,uname5,status5

Thanks,
Venu.

Last edited by venummca; 07-14-2011 at 04:42 AM..
# 5  
Old 07-14-2011
Quote:
Originally Posted by venummca
Thanks to itkamaraj and rdcwayx for prompt reply.

@rdcwayx
Could you please explain the code how it works?
and If my file have , as separator[.csv file] then where I have to change the code?

ex:
1234,uname1,status1
1235,uname2,status2
1234,uname3,status3
1236,uname5,status5

Thanks,
Venu.
Use -F option:
Code:
awk -F',' 'NR==FNR{a[$1]++; next} a[$1]==1 ' infile infile

This User Gave Thanks to tukuyomi For This Post:
# 6  
Old 07-14-2011
If your first field is always 4 bytes and you have GNU uniq:
Code:
sort filename | uniq -u -w4

# 7  
Old 07-21-2011
Quote:
Originally Posted by rdcwayx
Code:
awk 'NR==FNR{a[$1]++; next} a[$1]==1 ' infile infile

@rdcwayx
The above code is working fine. But, when my input file reached 11 millions then the code is producing empty file. Could you please help me out from this issue?

Thanks,
venu.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Problem with getting awk to multiply a field by a value set based on condition of another field

Hi, So awk is driving me crazy on this one. I have searched everywhere and read man, docs and every related post Google can find and still no luck. The actual files I need to run this on are sensitive in nature, but it is the same thing as if I needed to calculate weighted grades for multiple... (15 Replies)
Discussion started by: cotilloe
15 Replies

2. Shell Programming and Scripting

Need help in awk: running a loop with one column and segregate data 4 each uniq value in that field

Hi All, I have a file like this(having 2 column). Column 1: like a,b,c.... Column 2: having numbers. I want to segregate those numbers based on column 1. Example: file. a 5 b 9 b 620 a 710 b 230 a 330 b 1910 (4 Replies)
Discussion started by: Raza Ali
4 Replies

3. Shell Programming and Scripting

awk to adjust coordinates in field based on sequential numbers in another field

I am trying to output a tab-delimited result that uses the data from a tab-delimited file to combine and subtract specific lines. If $4 matches in each line then the first matching sequential $6 value is added to $2, unless the value is 1, then the original $2 is used (like in the case of line... (3 Replies)
Discussion started by: cmccabe
3 Replies

4. Shell Programming and Scripting

Filter uniq field values (non-substring)

Hello, I want to filter column based on string value. All substring matches are filtered out and only unique master strings are picked up. infile: 1 abcd 2 abc 3 abcd 4 cdef 5 efgh 6 efgh 7 efx 8 fgh Outfile: 1 abcd 4 cdef 5 efgh 7 efxI have tried awk '!a++; match(a, $2)>0'... (32 Replies)
Discussion started by: yifangt
32 Replies

5. Shell Programming and Scripting

Printing uniq first field with the the highest second field

Hi All, I am searching for a script which will produce an output file with the uniq first field with the second field having highest value among all the duplicates.. The output file will produce only the uniqs which are duplicate 3 times.. Input file X 9 B 5 A 1 Z 9 T 4 C 9 A 4... (13 Replies)
Discussion started by: ailnilanjan
13 Replies

6. Shell Programming and Scripting

Sort field and uniq

I have a flatfile A.txt 2012/12/04 14:06:07 |trees|Boards 2, 3|denver|mekong|mekong12 2012/12/04 17:07:22 |trees|Boards 2, 3|denver|mekong|mekong12 2012/12/04 17:13:27 |trees|Boards 2, 3|denver|mekong|mekong12 2012/12/04 14:07:39 |rain|Boards 1|tampa|merced|merced11 How do i sort and get... (3 Replies)
Discussion started by: sabercats
3 Replies

7. UNIX for Dummies Questions & Answers

find uniq lines in file, using the first field of line

Hello all, new to unix and have just found the forum. I think I will be here quite often, and hope that in time i will be able to provide soem help, role on not being a newbie anymore :) I have a question which iI am hoping someone could help me with. If i have a file with lines in in thus... (8 Replies)
Discussion started by: grom
8 Replies

8. Shell Programming and Scripting

How to use uniq on a certain field?

How can I use uniq on a certain field or what else could I use? If I want to use uniq on the second field and the output would remove one of the lines with a 5. bob 5 hand jane 3 leg jon 4 head chris 5 lungs (1 Reply)
Discussion started by: Bandit390
1 Replies

9. UNIX for Dummies Questions & Answers

How to uniq third field in a file

Hi ; I have a question regarding the uniq command in unix How do I uniq 3rd field in a file ? original file : zoom coord 39 18652 39 18652 zoom coord 39 18653 39 18653 zoom coord 39 18818 39 18818 zoom coord 39 18840 39 18840 zoom coord 41 15096 41 15096 zoom... (1 Reply)
Discussion started by: babycakes
1 Replies

10. UNIX for Dummies Questions & Answers

Uniq using only the first field

Hi all, I have a file that contains a list of codes (shown below). I want to 'uniq' the file using only the first field. Anyone know an easy way of doing it? Cheers, Dave ##### Input File ##### 1xr1 1xws 1yxt 1yxu 1yxv 1yxx 2o3p 2o63 2o64 2o65 1xr1 1xws 1yxt 1yxv 1yxx 2o3p 2o63 2o64... (8 Replies)
Discussion started by: Digby
8 Replies
Login or Register to Ask a Question