awk compare and keep uniq


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting awk compare and keep uniq
# 1  
Old 11-04-2014
awk compare and keep uniq

Hi all
I was wondering if you may help me in resolving an issue.
In particular I have a file like this:
Quote:
ID1 Ent..
ID1 Cur..
ID2 Cur..
ID3 Ent..
ID4 Cur..
ID3 Ent..
ID3 Ent..
the
Code:
...

represent different string and what I wrote
Code:
Cur

or
Code:
Ent

are the constant.

Well, what I would like to obtain is a file in which are reported only the ID in which the second column exclusively start with
Code:
Cur

Quote:
ID2 Cur
ID4 Cur
For instance the ID1 is discarded because the secon colum start either with Ent and Cur.

Hoping everything is clear and tht someone could help me.

Best

Giuliano
# 2  
Old 11-04-2014
Confusing!

Code:
ID1 Ent..
ID1 Cur..
ID2 Cur..
ID3 Ent..
ID4 Cur..
ID3 Ent..
ID3 Ent..

Quote:
For instance the ID1 is discarded because the secon colum start either with Ent and Cur.
In your example there's nothing different between accepted output
ID2 Cur
ID4 Cur
and
ID1 Cur

Last edited by Aia; 11-04-2014 at 12:37 PM.. Reason: Edited because OP's ambiguity
# 3  
Old 11-04-2014
No because I could have also these cases:

Quote:
ID1 Ent..
ID1 Cur..
In this case I do not want keep
Code:
ID1

But I think I resolve the issue with grep command.

But if you have alternative...
# 4  
Old 11-04-2014
Lets hope your sample is meaningful and representative. Try
Code:
awk     '$2 ~ /^Ent/    {ENT[$1]}
         $2 ~ /^Cur/    {CUR[$1]}
         END            {for (i in CUR) if (!(i in ENT)) print i, CUR[i]}
        ' file
ID2 Cur..
ID4 Cur..

# 5  
Old 11-04-2014
What if you have repetitions in your input as in ID5 has "Cur" in the 2nd col twice so what is the desired output then...
Code:
ID3 Ent
ID5 Cur
ID6 Ent
ID7 Ent
ID5 Cur

# 6  
Old 11-04-2014
Quote:
Originally Posted by RudiC
Lets hope your sample is meaningful and representative. Try
Code:
awk     '$2 ~ /^Ent/    {ENT[$1]}
         $2 ~ /^Cur/    {CUR[$1]}
         END            {for (i in CUR) if (!(i in ENT)) print i, CUR[i]}
        ' file
ID2 Cur..
ID4 Cur..

You need to store the value:
Code:
          $2 ~ /^Cur/    {CUR[$1]=$2}

A variant is
Code:
awk '{if ($2~/^Cur/) {CUR[$1]=$2} else {DEL[$1]}} END {for (i in CUR) if (!(i in DEL)) print i, CUR[i]}' file


Last edited by MadeInGermany; 11-04-2014 at 03:28 PM..
This User Gave Thanks to MadeInGermany For This Post:
# 7  
Old 11-04-2014
Absolutely! Thanks. I edited my initial post and missed that one. Rats!
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

awk or uniq

Hi Help, I have a file which looks like 1 20 30 40 50 60 6 2 20 30 40 50 60 8 7 20 30 40 50 60 7 4 30 40 50 60 70 8 5 30 40 50 60 70 9 2 30 40 50 60 70 8 I want the o/p as 1 20 30 40 50 60 6 4 30 40 50 60 70 8 Is there a way I can use uniq command or awk to do this? ... (11 Replies)
Discussion started by: Indra2011
11 Replies

2. Shell Programming and Scripting

Sort uniq or awk

Hi again, I have files with the following contents datetime,ip1,port1,ip2,port2,number How would I find out how many times ip1 field shows up a particular file? Then how would I find out how many time ip1 and port 2 shows up? Please mind the file may contain 100k lines. (8 Replies)
Discussion started by: LDHB2012
8 Replies

3. Shell Programming and Scripting

Rewriting GNU uniq in awk

Within a shell script I use uniq -w 16 -D in order to process all lines in which the first 16 characters are duplicated. Now I want to also run that script on a BSD based system where the included version of uniq does not support the -w (--check-chars) option. To get around this I have... (7 Replies)
Discussion started by: mij
7 Replies

4. Shell Programming and Scripting

awk - getting uniq count on multiple col

Hi My file have 7 column, FIle is pipe delimed Col1|Col2|col3|Col4|col5|Col6|Col7 I want to find out uniq record count on col3, col4 and col2 ( same order) how can I achieve it. ex 1|3|A|V|C|1|1 1|3|A|V|C|1|1 1|4|A|V|C|1|1 Output should be FREQ|A|V|3|2 FREQ|A|V|4|1 Here... (5 Replies)
Discussion started by: sanranad
5 Replies

5. Shell Programming and Scripting

Text Proccessing with sort,uniq,awk

Hello, I have a log file with the following input: X , ID , Date, Time, Y 01,01368,2010-12-02,09:07:00,Pass 01,01368,2010-12-02,10:54:00,Pass 01,01368,2010-12-02,13:07:04,Pass 01,01368,2010-12-02,18:54:01,Pass 01,01368,2010-12-03,09:02:00,Pass 01,01368,2010-12-03,13:53:00,Pass... (12 Replies)
Discussion started by: rollyah
12 Replies

6. Shell Programming and Scripting

Help with uniq or awk??

Hi, my dilemna is this: example i got a file of fruit.txt which contains: Apple 6 Apple_new 7 old_orange 9 orange 10 Is there any way for me to have an output of Apple 13 Orange 19 using shell script: (6 Replies)
Discussion started by: shinoman28
6 Replies

7. Shell Programming and Scripting

How to replicate data using Uniq or awk

Hi, I have this scenario; where there are two classes:- apple and orange. 1,2,3,4,5,6,apple 1,1,0,4,2,3,apple 1,3,3,3,3,4,apple 1,1,1,1,1,1,orange 1,2,3,1,1,1,orange Basically for apple, i have 3 entries in the file, and for orange, I have 2 entries. Im trying to edit the file and find... (5 Replies)
Discussion started by: ahjiefreak
5 Replies

8. Shell Programming and Scripting

using uniq and awk??

I have a file that is populated: hits/books.hits:143.217.64.204 Thu Sep 21 22:24:57 GMT 2006 hits/books.hits:62.145.39.14 Fri Sep 22 00:38:32 GMT 2006 hits/books.hits:81.140.86.170 Fri Sep 22 08:45:26 GMT 2006 hits/books.hits:81.140.86.170 Fri Sep 22 09:13:57 GMT... (13 Replies)
Discussion started by: amatuer_lee_3
13 Replies

9. Shell Programming and Scripting

Compare 2 files and give uniq output

Hi , Just to find out a way to compare these 2 files and give unique output. For eg: 1.txt contains 1 2 3 4 5 6 -------------------------------------- 2.txt contains 1 2 6 8 (1 Reply)
Discussion started by: rauphelhunter
1 Replies

10. Shell Programming and Scripting

compare two col from 2 files, and output uniq from file 1

Hi, I can't find how to achive such thing, please help. I have try with uniq and comm but those command can't compare columns just whole lines, I think awk will be the best but awk is magic for me as of now. file a a1~a2~a3~a4~a6~a7~a8 file b b1~b2~b3~b4~b6~b7~b8 output 1: compare... (2 Replies)
Discussion started by: pp56825
2 Replies
Login or Register to Ask a Question