Datei auslesen, ersetzen und Kommando absetzen

Dieses Thema im Forum "Linux OS" wurde erstellt von schman, 05.06.2009.

  1. schman

    schman Grünschnabel

    Dabei seit:
    05.06.2009
    Beiträge:
    1
    Zustimmungen:
    0
    Hallo

    ich bin neu hier und deshalb entschuldigt bitte falls ich einen Post schreibe den es bereits gibt, leider konnte ich keinen Thread finden der mir weiterhilft.

    Folgendes versuche ich zu lösen.

    Ich habe eine Datei in der mehrere Zeilen drinnen stehen welche Dateien sich geändert haben, ein typisches diff eben. Diese Datei sieht dann so aus.

    PHP:
    Datei ../Verzeichnis1/Pfad/zur/Datei und ../Verzeichnis2/Pfad/zur/Datei sind unterschiedlich.
    das eben mehrere Zeilen. Nun würde ich gerne per Kommando diesen Pfad so umbauchen das sich dadurch ein Kommando ergibt. Es soll am Schluss folgendes rauskommen.

    PHP:
    diff -../Verzeichnis1/Pfad/zur/Datei ../Verzeichnis2/Pfad/zur/Datei datei.diff
    Ich habe gelesen das das ev. mit sed zu lösen ist, stimmt das. Gibt es eine andere Möglichkeit das zu bewerkstelligen.

    Danke für eure Vorschläge und Hilfe
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 bitmuncher, 05.06.2009
    Zuletzt bearbeitet: 05.06.2009
    bitmuncher

    bitmuncher Der Stillgelegte

    Dabei seit:
    08.05.2007
    Beiträge:
    3.171
    Zustimmungen:
    0
    Theoretisch lässt sich das mit jeder Skriptsprache machen und evtl. gibt es auch einen Weg mit sed. Ich mag aber weder sed noch bash, daher hier ein Perl-Skript dafür. ;)

    Code:
    #!/usr/bin/perl
    
    # datei in der die zu vergleichenden Dateien stehen
    # die eintraege muessen folgende form haben:
    # Datei ../Verzeichnis1/Pfad/zur/Datei1 und ../Verzeichnis2/Pfad/zur/Datei1 sind unterschiedlich.
    # jeder eintrag muss in einer extra zeile stehen
    my $input_file = 'meineliste.txt';
    
    open(FILE, "< $input_file") or die "Konnte $input_file nicht oeffnen: $!\n";
    while(my $line = <FILE>) {
        if($line =~ /Datei (.*) und (.*) sind unterschiedlich/) {
            my $cmd = "diff -u ".$1." ".$2." > datei.diff";
            print "Befehl: ".$cmd."\n";
            my $out = `$cmd`;
            print $out;
        }
    }
    
    Lässt sich natürlich nach belieben erweitern und anpassen. Man könnte z.B. noch prüfen ob wirklich nur ein Eintrag in einer Zeile steht u.ä.

    Edit: Ups, da war ein 'my' an der falschen Stelle. Korrigiert.
     
  4. #3 floyd62, 05.06.2009
    floyd62

    floyd62 Routinier

    Dabei seit:
    01.05.2007
    Beiträge:
    309
    Zustimmungen:
    0
    Du kannst auch ganz einfach in der Shell mit einer while-Schleife deine Liste einlesen, mit Hilfe der Keywords überprüfen, ob die Eingabezeilen korrekt formatiert sind, und dann den diff ausführen, etwa so:
    Code:
    #!/bin/sh
    
    IN=${1:-liste}
    exec 3<$IN
    
    N=0
    while read DATEI F1 UND F2 SIND UNTERSCHIEDLICH <&3; do
            N=`expr $N + 1`
            [ "$DATEI" = "Datei" -a "$UNTERSCHIEDLICH" = "unterschiedlich" ] || {
                    echo "$IN, line $N: incorrect format" >&2
                    continue
            }
            echo "* $F1 - $F2:"
            diff -u "$F1" "$F2" 2>&1
            echo "*"
    done >datei.diff
    
    Ich habe die Ausgabe der gesamten while-Schleife nach "datei.diff" umgelenkt (und deswegen die "*"-Zeilen mit Dateinamen und Ende-Marke eingefügt); wenn du die diffs der einzelnen Dateien separat haben willst, musst du innerhalb der Schleife natürlich auch Dateinamen für die einzelnen Ausgaben konstruieren, sonst überschreibst du bei jedem Schleifendurchlauf die bisherigen Ergebnisse, und bekommst nur die diffs für die in der letzten Zeile deiner Liste aufgelisteten Dateien.

    Gruss,
    A.
     
Thema:

Datei auslesen, ersetzen und Kommando absetzen

Die Seite wird geladen...

Datei auslesen, ersetzen und Kommando absetzen - Ähnliche Themen

  1. Datei auslesen und fund per MAil versenden.

    Datei auslesen und fund per MAil versenden.: Hallo folgendes Script habe ich zur Zeit in Arbeit. Und zwar führe ich über "at" ein kleines Script aus was in einem Logfile nach bestimmten...
  2. Dateien auslesen und Daten systematisch angeordnet in Datei ausgeben

    Dateien auslesen und Daten systematisch angeordnet in Datei ausgeben: Guten Abend, ich hätte da mal eine Frage. Bin mir recht sicher, dass es in der Shell funktionieren sollte, aber kenne mich damit kaum aus....
  3. ca. 1200 PDF-Dateien auslesen und bestimmte Daten in eine CSV-Datei speichern

    ca. 1200 PDF-Dateien auslesen und bestimmte Daten in eine CSV-Datei speichern: Hallo Leute, heute brauche ich mal einen dringenden Rat von Euch. Ich habe hier etwas mehr als 1200 PDF-Dateien (Text), die jeweils ein...
  4. Prblem mit zeilenweises auslesen von Datei und schreiben nach mysql

    Prblem mit zeilenweises auslesen von Datei und schreiben nach mysql: Hallo Eventuell kann mir jemand bei meinem Problem helfen. Ich habe mich irgendwie total verrannt und komme nicht weiter. Die folgende...
  5. Datei auslesen per Python (WLST)

    Datei auslesen per Python (WLST): Guten Abend, ich weiß nicht ob ich das hier posten kann - da WLST (WebLogic Scripting Tool) ja jetzt nicht so dazu gehört... Aber vielleicht...