shell Frage: 2 dateien vergleichen ohne den "diff"

keks88
Interessierter
Interessierter
Beiträge: 41
Registriert: Freitag 27. August 2004, 00:50

shell Frage: 2 dateien vergleichen ohne den "diff"

Beitrag von keks88 »

hi leuts,

Ich versuche hier krampfhaft ne lösung zu finden, komme aber leider nicht mehr weiter und bin schon am verzweifeln.

Ich habe hier ein script geschrieben, was dynamisch eine Liste (Haupt.Liste) mit hexzahlen erstellt.

Aus der liste werden nach einem bestimmten Kriterium, einige zahlen aussortiert und in eine extra liste(Sort.Liste) abgelegt.

Mein ziel ist, die Hexzahlen aus der "Sort.Liste", aus der "Haupt.Liste" zu entfernen, aber da sich die zahlen und die menge ständig ändern muß das ganze dynamisch erfolgen.

Leider wird in mein busybox der befehl "diff" nicht unterstützt was das ganze erleichtern würde.

hier eine beispiel Liste:

Haupt.Liste....|Sort.Liste

0178.............|4983
0B74.............|5877
1753.............|E582
3F55
4983
4D92
4F07
5877
5D73
6620
6655
8713
A515
B0C6
CB08
CB61
CB6A
CB7D
DCC6
DE25
E582
hat jemand von euch eine Idee , wie man das lösen könnte ?

Ich habe bis jetzt folgendes versucht:

Mit "grep -n" die zeilennummer in der Haupt.List ermittelt (also die zeilennummer wo die zahlen aus der Sort.Liste stehen) und in eine Liste (zeilen.Liste) ausgegeben, damit später, in der Liste angegebene zeilen mit "sed" zu löschen.
Leider habe ich aber nicht geschafft "sed" dazu zu bewegen, die "zeilen.Liste" dynamisch einzulesen und abzuarbeiten.


Bin für jeder hilfe dankbar

Ps: der befehl "cut" wird auch nicht unterstützt

mfg
keks88
keks88
Interessierter
Interessierter
Beiträge: 41
Registriert: Freitag 27. August 2004, 00:50

Beitrag von keks88 »

hmmm... kann mir niemand einen Tipp geben, oder ist die aufgabe nicht lösbar ??

mfg
keks88
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Beitrag von Houdini »

probier dochmal das diff ppc binary von: http://packages.debian.org/stable/base/diff
Barf
Developer
Beiträge: 1475
Registriert: Dienstag 4. Februar 2003, 22:02

Beitrag von Barf »

Code: Alles auswählen

sed `sed -e "s:^:-e s/:" -e "s:$:.//:" Sort.Liste` Haupt.Liste
keks88
Interessierter
Interessierter
Beiträge: 41
Registriert: Freitag 27. August 2004, 00:50

Beitrag von keks88 »

Danke für eure hilfe, aber funktioniert leider beides nicht :(

Ich hänge hier mal die Beispieldateien an, vielleicht ist es dann einfacher.

Also das ziel ist:

content-file3 = content-file1 - content-file2
....................^Haupt.Liste^....^Sort.Liste^
oder

sed read > zeilen.Liste und lösche zeilen in der Haupt.Liste


Beispieldateien:

mfg
keks88
keks88
Interessierter
Interessierter
Beiträge: 41
Registriert: Freitag 27. August 2004, 00:50

Beitrag von keks88 »

Mir wurde schon wo anders geholfen, aber ich setze die lösung auch hier rein.

Code: Alles auswählen


#!/bin/bash
FILE1="sortliste";
FILE2="hauptliste";
D=$(cat $FILE1);
while read WERT
do
   NOT="nothing";
   for I in ${D}
   do
     if [ "$I" = "$WERT" ];
     then
     NOT="del";
     fi
   done
  if  [ "$NOT" = "nothing" ]; then
   echo $WERT;    
  fi
done < $FILE2 >> result

oder ne einzeiler lösung mit grep, aber die Option "-f" wird nicht immer unterstüzt :-?

Code: Alles auswählen


 grep -f Sort.Liste -v hauptliste > Resultat
mfg
keks88