Seeking Alternative for diff in hp

Hi ,

I have to use HP-unix OS to get difference between 2 files.while i tried a piece of code in other OS(linux/unix) as below, it worked fine & the output is desired one.

 diff --suppress-common-lines -y file_1 file_2 >d.txt 

The same doesn't works in HP -unix. Any help shall be thankful.Meanwhile, i also trying my hands with difference options.

NOTE: this code will generate a report of DB comparison & specific format is needed in output which is almost achieved by above code.Cosmetic changes can be applied later, if required.

Can't you install the GNU diff on HP-UX? See here: http://hpux.connect.org.uk/hppd/hpux/Gnu/diffutils-3.3

As i mentioned the environment remains HP.There is no scope of any installation.

You don't need to install them system-wide. Just distribute it together with your script. After all, it's free software, available in source code. You could equally well write your own diff tool, but why do so if something is already available?

Will you please advise how to do so ?

When you run configure , you can explicitly set the directory where the tools get installed to. You can set it for instance to the same directory where you have stored your shell scripts.

The details are described in the file INSTALL in the section "Installation Names". You can look at this file even before downloading evreything: [400 Bad Request](HP-UX Porting and Archiving Centre | WWWTar Query .)

You do have a C-compiler on your HP-UX, don't you?

Hi.

For the install of GNU diff , it looks like there are also dependencies to be installed:

gettext 	libiconv 	libunistring 	make
http://hpux.connect.org.uk/hppd/hpux/Gnu/diffutils-3.3/

Best wishes ... cheers, drl

---------- Post updated at 09:51 ---------- Previous update was at 09:36 ----------

Hi.

For this specific case, one can come quite close with a perl script. Here's a comparison between the two. This perl version -- which does only -y and --suppress-common-lines -- is file sdiff.pl .

#!/usr/bin/env bash

# @(#) s1       Demonstrate comparison, diff, standard, work-alike.

LC_ALL=C ; LANG=C ; export LC_ALL LANG
pe() { for _i;do printf "%s" "$_i";done; printf "\n"; }
pl() { pe;pe "-----" ;pe "$*"; }
em() { pe "$*" >&2 ; }
db() { ( printf " db, ";for _i;do printf "%s" "$_i";done;printf "\n" ) >&2 ; }
db() { : ; }
C=$HOME/bin/context && [ -f $C ] && $C diff ./sdiff.pl

pl " Input data files data[12] columnized":
paste data[12] |
align

pl " Results, diff:"
diff -y --suppress-common-lines data1 data2 |
align

pl " Results, perl:"
./sdiff.pl data1 data2 |
align

exit 0

producing:

$ ./s1

Environment: LC_ALL = C, LANG = C
(Versions displayed with local utility "version")
OS, ker|rel, machine: Linux, 3.16.0-4-amd64, x86_64
Distribution        : Debian 8.6 (jessie) 
bash GNU bash 4.3.30
diff (GNU diffutils) 3.3
./sdiff.pl - ( local: ./sdiff.pl, 2016-12-08 )

-----
 Input data files data[12] columnized:
a       b
b       c
c       d
e       e
h       f
j       j
l       k
m       l
n       m
p       r
        s
        t

-----
 Results, diff:
a <
  > d
h | f
  > k
n | r
p | s
  > t

-----
 Results, perl:
a <
  > d
h | f
  > k
n | r
p | s
  > t

However, as with installing the GNU diff , there are also perl dependencies to consider:

sdiff.pl        Demonstrate work-alike for diff -y, ignore common, perl. (what)
Path    : ./sdiff.pl
Version : - ( local: ./sdiff.pl, 2016-12-08 )
Length  : 83 lines
Type    : Perl script, ASCII text executable
Shebang : #!/usr/bin/env perl
Modules : (for perl codes)
 Data::Dumper   2.151_01
 Algorithm::Diff        1.1902

On the system I use:

OS, ker|rel, machine: HP-UX, B.11.11, 9000/785
Distribution        : GenericSysName [HP Release B.11.11] (see /etc/issue)
perl 5.10.1

the module Algorithm::Diff was not installed. It may be on your system, but if not, then you are in roughly the same situation as installing GNU diff .

Good luck ... cheers, drl

2 Likes