PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Datein Vergleichen



geist_der_foren
19.02.04, 15:32
Hi @all,

gibt es ein Tool unter Linux, der mir 2 Datein vergleicht und dann die Differenz ausgibt ?

Also ich hab hier z.B. eine Datei names datei1 mit den inhalt
datei1_user1
datei1_user2
datei1_user3und dann habe ich noch eine Datei names datei2 mit den inhalt
datei1_user1
datei1_user2
datei1_user3
datei2_user1
datei2_user2
datei2_user3
datei2_user4Jetzt würde ich mir gerne nur folgendes ausgeben lassen:
datei2_user1
datei2_user2
datei2_user3
datei2_user4Hab es schon mit comm, diff & CO versucht, aber ich kommt nicht auf das Ergeniss was ich suche, kann mir jemand helfen ?
Danke schon mal im voraus...

Schärple
19.02.04, 15:40
Bitteschön.



;-)

Stanislaus
19.02.04, 15:44
Ähhmm.. diff macht aber doch genau das

file1:


datei1_user1
datei1_user2
datei1_user3


file2:


datei1_user1
datei1_user2
datei1_user3
datei2_user1
datei2_user2
datei2_user3
datei2_user4




diff file1 file2 > filediff


filediff:


3a4,7
> datei2_user1
> datei2_user2
> datei2_user3
> datei2_user4


Ist doch genau das was Du willst, oder?

geist_der_foren
19.02.04, 15:53
sorry mein fehler, ich habtte auf meinen Testrechner ein fehler ...

diff mach genau das was ich möchte ...
Danke für die Antworten

Blackhawk
19.02.04, 15:53
guck dir auch mal sdiff an oder wenn die dateien zu gross sind: bdiff

sdiff ist meist mein Tool der Wahl...

geist_der_foren
19.02.04, 16:11
also mein prob ist nicht so ganz gelöst ... wie ich dachte :(

also ich möchte 2 passwd´s verglechegen und die User rausschmeisen die schon drin sind ... Das prob ist bei diff wird ja die ganze Zeile vergleicht. Hier mal ein beispiel der 2 Passwd´s
PASSWD1_ALT

root:*:0:3::/:/sbin/sh
daemon:*:1:5::/:/sbin/sh
bin:*:2:2::/usr/bin:/sbin/sh
sys:*:3:3::/:
adm:*:4:4::/var/adm:/sbin/sh
uucp:*:5:3::/var/spool/uucppublic:/usr/lbin/uucp/uucico
lp:*:9:7::/var/spool/lp:/sbin/sh
nuucp:*:11:11::/var/spool/uucppublic:/usr/lbin/uucp/uucico
hpdb:*:27:1:ALLBASE:/:/sbin/sh
informix:*:101:101:Informix-User,,,:/home/informix:/usr/bin/shPASSWD_NEU:
root:x:0:0:ROOT USER:/root:/bin/bash
bin:x:1:1:bin:/bin:/bin/bash
daemon:x:2:2:Daemon:/sbin:/bin/bash
lp:x:4:7:Printing daemon:/var/spool/lpd:/bin/bash
mail:x:8:12:Mailer daemon:/var/spool/clientmqueue:/bin/false
news:x:9:13:News system:/etc/news:/bin/bash
uucp:x:10:14:Unix-to-Unix CoPy system:/etc/uucp:/bin/bash
games:x:12:100:Games account:/var/games:/bin/bash
man:x:13:62:Manual pages viewer:/var/cache/man:/bin/bash
at:x:25:25:Batch jobs daemon:/var/spool/atjobs:/bin/bash
wwwrun:x:30:8:WWW daemon apache:/var/lib/wwwrun:/bin/false
ftp:x:40:49:FTP account:/srv/ftp:/bin/bash
sshd:x:71:65:SSH daemon:/var/lib/sshd:/bin/false
nobody:x:65534:65533:nobody:/var/lib/nobody:/bin/bash
Wenn ich jetzt ein diff mache, dann kommt folgendes raus:
1,10c1,14
< root:*:0:3::/:/sbin/sh
< daemon:*:1:5::/:/sbin/sh
< bin:*:2:2::/usr/bin:/sbin/sh
< sys:*:3:3::/:
< adm:*:4:4::/var/adm:/sbin/sh
< uucp:*:5:3::/var/spool/uucppublic:/usr/lbin/uucp/uucico
< lp:*:9:7::/var/spool/lp:/sbin/sh
< nuucp:*:11:11::/var/spool/uucppublic:/usr/lbin/uucp/uucico
< hpdb:*:27:1:ALLBASE:/:/sbin/sh
< informix:*:101:101:Informix-User,,,:/home/informix:/usr/bin/sh
---
> root:x:0:0:ROOT USER:/root:/bin/bash
> bin:x:1:1:bin:/bin:/bin/bash
> daemon:x:2:2:Daemon:/sbin:/bin/bash
> lp:x:4:7:Printing daemon:/var/spool/lpd:/bin/bash
> mail:x:8:12:Mailer daemon:/var/spool/clientmqueue:/bin/false
> news:x:9:13:News system:/etc/news:/bin/bash
> uucp:x:10:14:Unix-to-Unix CoPy system:/etc/uucp:/bin/bash
> games:x:12:100:Games account:/var/games:/bin/bash
> man:x:13:62:Manual pages viewer:/var/cache/man:/bin/bash
> at:x:25:25:Batch jobs daemon:/var/spool/atjobs:/bin/bash
> wwwrun:x:30:8:WWW daemon apache:/var/lib/wwwrun:/bin/false
> ftp:x:40:49:FTP account:/srv/ftp:/bin/bash
> sshd:x:71:65:SSH daemon:/var/lib/sshd:/bin/false
> nobody:x:65534:65533:nobody:/var/lib/nobody:/bin/bash
Ich möchte mir aber nur die User ausgeben lassen, die es nicht gibt ! Gibt es eine Möglichkeit das so ausgeben zu lassen ?