Shell Scripting

  • Themenstarter Themenstarter AlanBraxe
  • Beginndatum Beginndatum
A

AlanBraxe

Guest
Welche Möglichkeiten hat man unter Linux mit einem Shell Script zwei C(pp)-Dateien miteinander zu vergleichen. Das Problem ist, dass die Kommentare rausgefiltert werden müssen, d.h. nicht beachtet werden müssen. Auch eventuelle Leerzeichen und Leerzeilen und auch Tabs dürfen nicht beachtet werden. Der Unterschied darf halt nur an dem reinen C-Code festzumachen sein.
Welche Befehle könnte man einsetzen die z.B. die Dateien Zeilenweise durchgehen. Um reguläre Ausdrücke wird man sicherlich nicht rumkommen.

Weiß jemand Rat???

TIA
Alan
 
wieso muss das ein shell script sein? schreib doch einfach ein eigenes c prog dafür. das rausfiltern von leerzeichen könnte knifflig werden, aber sonst ist das doch relativ easy!
 
ist richtig. in c wär das bestimmt nicht so ein problem. das problem ist aber, dass es ein shell-script werden muss.

weißt du rat?
 
naja, dann kann ich dir nur allgemein helfen:

-tabs lerrzeichen und zeilenendezeichen sind ascii zecihen unter 32

-kommentare werden von bestimmten zeichen eingeklammert oder eingeleitet.

so könnte dein alghorithmus aussehen:



wiederhole
anfang1:
-lies string1 aus datei1 bis zeilen ende

-wenn erste zeichen in string1 '//', dann gehe zu anfang1

-wenn erste zeichen in string1 '/*', dann
begin
wiederhole
-lies string1 aus datei1 bis zeilen ende
bis letztes zeichen in string1 '*/'

-gehe zu anfang1
end

anfang2:
-lies string2 aus datei2 bis zeilen ende

-wenn erste zeichen in string2 '//', dann gehe zu anfang2

-wenn erste zeichen in string2 '/*', dann
begin
wiederhole
-lies string2 aus datei2 bis zeilen ende
bis letztes zeichen in string2 '*/'

-gehe zu anfang2
end

bis Eliminiere(string1) != Elinminiere(string2) oder string1 = EOF

wenn Eliminiere(string1) != Eliminiere(string2) -gib 'falsch' zurück
sonst -gib 'wahr' zurück



Eliminiere ist eine Funktion, die einen string übernimmt, alle sonderzeichen löscht, und das ergebnis zurückgibt. (Kommentare kommen hier nur als ganze zeilen vor, aber der anfang ist gemacht)
 
@ sticky bit:

ja es darf auch ein perl script enthalten sein. hast du dann irgendeine idee?

TIA

Alan
 
Zurück
Oben