2 files vergleichen - please help

S

sniffer

Jungspund
hallo zusammen.

bin neu hier und hab gleich ne frage ..... sorry.

hoffentlich kann mir einer der spezialisten hier helfen.

mein problem: ich schreibe mir die EVA storage konfig in ein file (vdisk, wwid, system, und size) und den lsscsi/scsi_info (device, wwid) in ein zweites und will diese vergleichen.

auf was ich hinaus will:
wenn im ersten file die wwid mit der im zweiten file übereinstimmt dann soll ins erste file das device geschrieben werden.

beispiel file 1:
vdisk : epp_data_vd001 WWLN : 600508b40010611d0000900004670000 Storage : A_IT1 Size MB : 200
vdisk : epp_arch_vd001 WWLN : 600508b40010611d00009000041c0000 Storage : A_IT1 Size MB : 40

beispiel file 2:
/dev/sda 600508b40010611d0000900004670000
/dev/sdb 600508b40010611d00009000041c0000

was ich haben will:
/dev/sda = vdisk : epp_data_vd001 WWLN : 600508b40010611d0000900004670000 Storage : A_IT1 Size MB : 200
/dev/sdb = vdisk : epp_arch_vd001 WWLN : 600508b40010611d00009000041c0000 Storage : A_IT1 Size MB : 40
usw.

hat einer ne idee wie ich dieses am besten vergleichen kann? der schlüssel ist die wwid die in beiden files gleich ist und im file 1 an der 6. stelle - im 2. file an der 2. stelle steht.

wenn´s geht dann will ich hier kein perl verwenden irgendwas mit awk/sed/comm/merge/find/..... oder wie auch immer wäre mir am liebsten.

os: sles 9.3 / shell: bash

herzlichen dank schon mal für euer bemühungen
roland
 
hoi,

vielleicht hilft dir das programm diff weiter. man diff gibt auskunft...
 
hi shellmaster

diff nicht wirklich das ja in den beiden files ja nur der key "wwid" gleich ist.

hab´s jetzt so zusammengestellt das ich mittels awk die wwid´s in beiden files an die erste stelle stelle und dann mit sort sotiere. danach schreib ich den gesammten output wieder mittels awk zusammen.

schnell noch eine frage die du sicher beantworten kannst.

wie lösche ich in jeder 2. zeile im file den ersten string?

gruß
roland
 
ok - ist schwer zu verstehen wenn man nicht selber betroffen ist.

hier ein beispiel auf was ich hinaus will:
jede zeile beginnt mit wwln: +32 zahlen. ich will in der 1., 3., 5., 7., ..... zeile immer den forderen bereich bis zu /dev/... wegschneiden (fett markiert). klar was ich meine?

WWLN : 600508b40010611d00009000041c0000 /dev/sdb
WWLN : 600508b40010611d00009000041c0000 vdisk :
WWLN : 600508b40010611d0000900004230000 /dev/sdc
WWLN : 600508b40010611d0000900004230000 vdisk :

gruß
roland
 
Hallo...

Da würde 'sed -e 's:^.* /:/:g' deineDatei.txt > ergebnis.txt' funktionieren...
Ist halt eher quick'n'dirty...

gruss
d22
 
Tja, hättest Du Perl nicht ausgeschlossen, hättest Du in 5 Min. ne Lösung für Dein Problem im ersten Post.

Gruss, Xanti
 
@dizzgo
dirty? nö, genau das was ich suche - danke!

@Xanti
ich weiß ich weiß, aber dann muss ich perl auch noch lernen .......

problem ist somit erledigt - herzlichen dank an alle!

gruß
roland
 

Ähnliche Themen

Wo sind die Geräte?

Hardware Problem

Festplatte stirbt, dd funktioniert nicht

Displayport + externer Monitor zeigt bei startx nichts erst bei DVI

Modulfehler?

Zurück
Oben