HPUX and comm command


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting HPUX and comm command
# 1  
Old 05-02-2012
HPUX and comm command

I need to compare 2 files. I need to see if 1 file has records that are not in a second file. I did some searching and found the 'comm' command. According to the man pages
Code:
comm -23 test1.txt test2.txt

Will tell me what is in file 1 and not in file 2. So I did a simple test

test1.txt has the following data
Code:
2
3
4
1

test2.txt
Code:
1
2
3

Code:
> comm -23 test1.txt test2.txt
4
1

It looks like comm doesn't work if the fields are ordered differently. How do I do this?

Last edited by joeyg; 05-02-2012 at 12:33 PM.. Reason: Please wrap data examples with CodeTags also.
# 2  
Old 05-02-2012
Searches in order

Quote:
For efficiency, standard implementations of comm expect both input files to be sequenced in the same line collation order, sorted lexically. The sort (Unix) command can be used for this purpose.
Thus, you should sort each file prior to doing a COMM command.
This User Gave Thanks to joeyg For This Post:
# 3  
Old 05-02-2012
Hi.

There are many times when I don't want to sort the comm input files. So then I use combine, part of moreutils to be found at: moreutils

Here's a comparison:
Code:
#!/usr/bin/env bash

# @(#) s1       Demonstrate work-alike for comm, not requiring sort.
# http://kitenet.net/~joey/code/moreutils/

# Display context; "version" is local utility.
pe() { for _i;do printf "%s" "$_i";done; printf "\n"; }
pl() { pe;pe "-----" ;pe "$*"; }
db() { ( printf " db, ";for _i;do printf "%s" "$_i";done;printf "\n" ) >&2 ; }
db() { : ; }
pe
version 2>/dev/null && version =o perl comm ./combine
pe " Utility combine is $( wc -l < combine ) lines of perl."

pl " Input data files data[12]:"
head data[12]

pl " Results with comm, unsorted:"
comm -23 data[12]

pl " Results with comm, sorted:"
comm -23 <( sort data1 ) <( sort data2 )

pl " Results with combine, unsorted:"
./combine data1 not data2

exit 0

producing:
Code:
$ ./s1

OS, ker|rel, machine: HP-UX, B.11.11, 9000/712
Distribution        : GenericSysName [HP Release B.11.11] (see /etc/issue)
perl 5.8.0
comm - ( /usr/bin/comm Nov 14 2000 )
./combine - (local: ./combine May 2 21:15 )
 Utility combine is 165 lines of perl.

-----
 Input data files data[12]:
==> data1 <==
2
3
4
1

==> data2 <==
1
2
3

-----
 Results with comm, unsorted:
4
1

-----
 Results with comm, sorted:
4

-----
 Results with combine, unsorted:
4

I don't know if all the moreutils work on HP-UX, but, as you can see, combine does.

Best wishes ... cheers, drl

( edit 1: replace xor with not [same result in this instance] )

Last edited by drl; 05-02-2012 at 05:46 PM..
# 4  
Old 05-02-2012
Quote:
I don't know if all the moreutils work on HP-UX
Not necessary to install a new package when the supplied utilties suffice.

Post #2 has the solution. Sort both files before running comm .
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Highlight 'comm' command output

Given the output below (simplified) extracted from the comparison of two curl -I commands saved in two different files, I am looking for the best approach to highlight the following scenarios in a script: this header exists only in file1.txt but this one does not this one exists in both cases... (1 Reply)
Discussion started by: muppets
1 Replies

2. UNIX for Beginners Questions & Answers

How to ignore Case with in COMM command?

Hi, How can i ignore case between 2 files in unix using COMM command. 2 input files are: -bash-4.1$ more x2.txt HELLO hi HI raj -bash-4.1$ more x3.txt hello hi raj COMM command: -bash-4.1$ comm x2.txt x3.txt hello HELLO hi (3 Replies)
Discussion started by: raju2016
3 Replies

3. Shell Programming and Scripting

Need help regarding formatting(comm -23 command)

Hello all , I have two files a.txt and b.txt which have same content . They contain data that is fetched from database through a java program. When I delete a line in a.txt and run the below command comm -13 a.txt b.txt I am not getting the expected result i.e. the line i deleted from... (5 Replies)
Discussion started by: RaviTej
5 Replies

4. Linux

comm command help

The manual does not cover this very well. What do the following compares will do ? 1) comm -13 file1 file2: will it display what is in file2 not in file1? 2) comm -23 file1 file2: will it display what in 1 but not in 2 ? Thanks (5 Replies)
Discussion started by: mrn6430
5 Replies

5. UNIX for Dummies Questions & Answers

Need help with comm command

Hello , I am trying to get contents which are only present in a.csv ,so using comm -23 cat a.csv | sort > a.csv cat b.csv | sort > b.csv comm -23 a.csv b.csv > c.csv. a.csv SKU COUNTRY CURRENCY PRICE_LIST_TYPE LIST_PRICE_EFFECTIVE_DATE TG430ZA ZA USD DF ... (4 Replies)
Discussion started by: RaviTej
4 Replies

6. UNIX for Dummies Questions & Answers

help on COMM command please

could some one please explain with examples how comm -12 & comm -3 works. I am confused with manual page, Thankyou. (2 Replies)
Discussion started by: Ariean
2 Replies

7. UNIX for Dummies Questions & Answers

help in comm command

Hi all, I need help in comm command , I am having 2 files . I have to display the common line in the two file only onnce and i have to also display the non common line as well. tmpcut1 -- First file cat tmpcut1 smstr_303000_O_432830_... f_c2_queue_sys30.sys30 RUNNING 10 1000... (1 Reply)
Discussion started by: arunkumar_mca
1 Replies

8. Shell Programming and Scripting

comm command

Hi I have issue with "comm " command file-1 ---- l65059 l65407 l68607 l68810 l69143 l71310 l72918 l73146 l73273 l76411 file-2 ----- (8 Replies)
Discussion started by: amitrajvarma
8 Replies

9. UNIX for Advanced & Expert Users

comm command in sorting IP

i have 2 files that contains a sorted list of IP addresses. file_A contains a list of all IPs file_B contains only around 50% of what is in file_A. I tried to execute comm -23 file_A file_B > file_C to get the difference. My objective is to put all the IPs that are in file_A but not... (1 Reply)
Discussion started by: tads98
1 Replies

10. UNIX for Dummies Questions & Answers

Comm, command help

See my other post on sdiff .... I don't think sdiff is able to do what I want. The 'comm' command does what I need and works fine as far as the logic and results. The problem I'm having is with the output format, it outputs 3 columns of data, but because of the way it starts each line... (2 Replies)
Discussion started by: cowpoke
2 Replies
Login or Register to Ask a Question