differentiating two sets


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting differentiating two sets
# 1  
Old 12-15-2008
differentiating two sets

Hi

Suppose i have a set of files like this

set1

a.cpp@@main/5
b.cpp@@main/6

set 2

m.cpp@@main/51
n.hpp@@main/51
a.cpp@@main/15
b.cpp@@main/2

there may be files with same name in 2 sets. i need to list the files in set1 which have last numeric field less than the same file in the other set?

how can this be achieved?
# 2  
Old 12-15-2008
Use nawk or /usr/xpg4/bin/awk on Solaris:

Code:
awk -F'\57' 'NR == FNR {
 _[$1] = $2
 next
 }
$1 in _ && _[$1] > $2
' set2 set1


Code:
$ head set*
==> set1 <==
a.cpp@@main/5
b.cpp@@main/6

==> set2 <==
m.cpp@@main/51
n.hpp@@main/51
a.cpp@@main/15
b.cpp@@main/2
$ awk -F'\57' 'NR == FNR {
 _[$1] = $2
 next
 }
$1 in _ && _[$1] > $2
' set2 set1 
a.cpp@@main/5

# 3  
Old 12-15-2008
Hi

Thanks. But my requirement is refined as follows
Both the sets will come as the output a list of filenames i.e each set will be having list of filenames.
from these two sets of filenames we have to have do the operation which you have performed earlier.
btw what is the 57 in your code?


Quote:
Originally Posted by radoulov
Use nawk or /usr/xpg4/bin/awk on Solaris:

Code:
awk -F'\57' 'NR == FNR {
 _[$1] = $2
 next
 }
$1 in _ && _[$1] > $2
' set2 set1


Code:
$ head set*
==> set1 <==
a.cpp@@main/5
b.cpp@@main/6

==> set2 <==
m.cpp@@main/51
n.hpp@@main/51
a.cpp@@main/15
b.cpp@@main/2
$ awk -F'\57' 'NR == FNR {
 _[$1] = $2
 next
 }
$1 in _ && _[$1] > $2
' set2 set1 
a.cpp@@main/5

# 4  
Old 12-15-2008
Quote:
Originally Posted by skyineyes
Hi

Thanks. But my requirement is refined as follows
Both the sets will come as the output a list of filenames i.e each set will be having list of filenames.
from these two sets of filenames we have to have do the operation which you have performed earlier.
Could you provide an example, please?

Quote:
btw what is the 57 in your code?
ASCII octal for /.
# 5  
Old 12-15-2008
Hi

Each of the two sets will have following filename format

/vobs/odyssey/sm/sybase/ddl/ods/SM_CFSCASHFLOWONHOLD.trg@@/main/3
/vobs/odyssey/sm/sybase/ddl/ods/SM_CFSCASHFLOW.trg@@/main/3
/vobs/odyssey/sm/sybase/ddl/ods/SM_CFSDIARY.trg@@/main/4
/vobs/odyssey/sm/sybase/ddl/ods/SM_SMVALIDCASHFLOW.trg@@/main/5


so we just need to see what filenames as present in both and then compare their last fields which is a number?

Can you help in this regard?

Quote:
Originally Posted by radoulov
Could you provide an example, please?



ASCII octal for /.
# 6  
Old 12-15-2008
Something like this may work with GNU Awk:

Code:
awk 'BEGIN {
  FS = OFS = "\57"
  }
NR == FNR {
  t = $NF; NF = NF - 1
 _[$0] = t; next
 }
{
  t = NF; NF = NF - 1
  if ($0 in _ && _[$0] > t)
    print $0, t
}' set2 set1

For other awks try this:

Code:
awk 'BEGIN {
  FS = OFS = "\57"
  }
NR == FNR {
  t = $NF; sub(/\/[^\/]*$/, "")
 _[$0] = t; next
 }
{
  t = $NF; sub(/\/[^\/]*$/, "")
  if ($0 in _ && _[$0] > t)
    print $0, t
}' set2 set1

# 7  
Old 12-15-2008
Hi

Getting error. Please have a look

Set 1

/vobs/odyssey/sm/sybase/ddl/ods/SM_CFSCASHFLOWONHOLD.trg@@/main/3
/vobs/odyssey/sm/sybase/ddl/ods/SM_CFSCASHFLOW.trg@@/main/3
/vobs/odyssey/sm/sybase/ddl/ods/SM_CFSDIARY.trg@@/main/4
/vobs/odyssey/sm/sybase/ddl/ods/SM_SMVALIDCASHFLOW.trg@@/main/5


set 2

/vobs/odyssey/sm/sybase/ddl/ods/SM_CFSCASHFLOWONHOLD.trg@@/main/4
/vobs/odyssey/sm/sybase/ddl/ods/SM_CFSCASHFLOW.trg@@/main/21
/vobs/odyssey/sm/sybase/ddl/ods/SM_CFSDIARY.trg@@/main/14
/vobs/odyssey/sm/sybase/ddl/ods/SM_SMVALIDCASHFLOW.trg@@/main/15


The script is as follows:

#!/bin/sh
set1=$1
set2=$2
awk 'BEGIN {
FS = OFS = "\57"
}
NR == FNR {
t = $NF; NF = NF - 1
_[$0] = t; next
}
{
t = NF; NF = NF - 1
if ($0 in _ && _[$0] > t)
print $0, t
}' set2 set1




When run the script as follows:

/home/odyssey/f091018>./script.sh set1 set2
awk: syntax error near line 10
awk: illegal statement near line 10
*********************************

Quote:
Originally Posted by radoulov
Something like this may work with GNU Awk:

Code:
awk 'BEGIN {
  FS = OFS = "\57"
  }
NR == FNR {
  t = $NF; NF = NF - 1
 _[$0] = t; next
 }
{
  t = NF; NF = NF - 1
  if ($0 in _ && _[$0] > t)
    print $0, t
}' set2 set1

For other awks try this:

Code:
awk 'BEGIN {
  FS = OFS = "\57"
  }
NR == FNR {
  t = $NF; sub(/\/[^\/]*$/, "")
 _[$0] = t; next
 }
{
  t = $NF; sub(/\/[^\/]*$/, "")
  if ($0 in _ && _[$0] > t)
    print $0, t
}' set2 set1

Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Merging and differentiating 2 files

I have 2 csv files say file1 and file2. Based on 2 columns, I want to check if the values of file1 is present in file 2 or not. If it's not present then it should create a file with the values which are not present. Basically I want the minus between 2 files but based on 2 columns but the output... (2 Replies)
Discussion started by: Gangadhar Reddy
2 Replies

2. UNIX for Advanced & Expert Users

sets the remote server's name

Hi all, does any one have any idea on how to sets the remote server's name on ubuntu terminal tabs, without making any changes to the remote server? for example if i'm working on ssh root@test1 i would like it to be shown on the tittle's tab and if i connect on another it would do the same... (7 Replies)
Discussion started by: charli1
7 Replies

3. Shell Programming and Scripting

differentiating PIDs under 200

Hey, So I'm new to shell scripting, and I'm trying to write one for my lab that will keep down the work load by deleting processes that are left over from previous sessions. Basically I want it to do three things. 1) Check the processes running 2) See if that person is logged on. 3) if... (2 Replies)
Discussion started by: prgoodwin
2 Replies

4. UNIX for Dummies Questions & Answers

Parameters to check while differentiating two servers

Hi All, I have two solaris servers. Please tell me what all parameters i can check to find out the difference between two servers. how to differentiate based on H/W,S/W etc like i have two servers spdwa013 $ uname -an SunOS spdwa013 5.8 Generic_117350-61 sun4u sparc SUNW,Sun-Fire-480R ... (1 Reply)
Discussion started by: usha rao
1 Replies

5. Solaris

FSS and processor sets

I read somewhere which says """FSS can be assigned to processor sets, resulting in more sensitive control of priorities on a server than raw processor sets"" can any one tell me how we can assign FSS to processor set and how it works ? Thanx (2 Replies)
Discussion started by: fugitive
2 Replies

6. Shell Programming and Scripting

differentiating two sets for filenames????

set 1 ./abc@@/main/61 ./def.cpp@@/main/13 ./fgh.cpp@@/main/16 ./ijk.cpp@@/main/12 ./mln.cpp@@/main/9 ./uvw.cpp@@/main/30 set2 ./eww@@/main/61 ./def.cpp@@/main/13 ./xxx.cpp@@/main/26 ./kkk.cpp@@/main/72 ./qqq.cpp@@/main/19 ./fgh.cpp@@/main/16 I have two sets with filenames in... (13 Replies)
Discussion started by: skyineyes
13 Replies

7. Programming

How An Application Sets The Ip Options???

Hello Friends, I'm involved in test the UDP/IP source code. As you might be knowing, IPv4 provides several options: like Loose Source and Record Route (LSRR), Strict Source and Record Route (SSRR) etc. I wanted to test the above mentioned IP options. My strategy is to write a test application... (3 Replies)
Discussion started by: aamirglb
3 Replies

8. Virtualization and Cloud Computing

Clouds (Partially Order Sets) - Streams (Linearly Ordered Sets) - Part 2

timbass Sat, 28 Jul 2007 10:07:53 +0000 Originally posted in Yahoo! CEP-Interest Here is my follow-up note on posets (partially ordered sets) and tosets (totally or linearly ordered sets) as background set theory for event processing, and in particular CEP and ESP. In my last note, we... (0 Replies)
Discussion started by: Linux Bot
0 Replies

9. Shell Programming and Scripting

Character Sets

Hi I was just wondering if there was a way in which i could find out the character set used in a file in HP-UX. ie Whether it is Unicode, UTF-8,ascii etc. Regards (3 Replies)
Discussion started by: PradeepRed
3 Replies
Login or Register to Ask a Question