Dateiinhalt per script anpassen

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von zirkuskater, 19.09.2005.

  1. #1 zirkuskater, 19.09.2005
    Zuletzt bearbeitet: 19.09.2005
    zirkuskater

    zirkuskater Grünschnabel

    Dabei seit:
    19.09.2005
    Beiträge:
    4
    Zustimmungen:
    0
    Hallo,

    ich sitze vor folgendem Problem.

    Ich habe von einem Router die ARP-Einträge gelesen. Als Ergebnis stehen in
    der Datei:arplist folgende Zeilen

    0000f4b21ba1 168.6.232.1004776 1126257685
    0000f4b482b1 168.6.13.1004778 1126257685
    ...
    ...
    usw.

    Nach der Bearbeitung soll aber in einer neuen Datei:maclist folgender Inhalt stehen:

    0000f4b21ba1 192.168.6.232 1126257685

    stehen.

    Vor 168 muß 192. eingefügt werden.
    Nach 168.6.232 muß der Punkt und alle Zeichen bis 1126257685 entfernt werden, wobei aber ein Leerzeichen erhalten bleiben muß.

    Bei den Zahlen 168 handelt es sich um ip Adressen wie 192.168.x.x
    Man könnte also sagen LÖSCHE nach der Zahl 168 ab dem dritten Punkt, diesen dritten Punkt und alle folgenden Zeichen bis zum Zahlenblock 1126257685.

    Also aus:

    0000f4b21ba1 168.6.232.1004776 1126257685
    wird
    0000f4b21ba1 192.168.6.232 1126257685



    Das Script sollte als cronjob auf linux laufen.


    Kann mir jemand helfen?


    Danke

    Andreas Oetter
     
  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 Wolfgang, 20.09.2005
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Deine Datei sei daten
    Ich mach das mal mit perl :D

    perl -pi"_bak" -e '~s!^(.*?)\s+(\d{1,3}\.\d{1,3}\.\d{1,3})\.(.*)$!$1 192.$2 $3!g' daten

    Dabei wird noch eine Datei daten_bak als backup angelegt.

    Gruß Wolfgang
     
  4. #3 zirkuskater, 20.09.2005
    zirkuskater

    zirkuskater Grünschnabel

    Dabei seit:
    19.09.2005
    Beiträge:
    4
    Zustimmungen:
    0
    ein kleiner Nachtrag noch..

    Erst mal Danke für diese "SUPER" Zeile Code.

    Nach dem Durchlauf schauen die Zeile nun so aus:

    0000f4e1a6a1 192.168.6.207 1496945 1127193604
    ...

    Der Eintrag 1496945, 6 Stellen, die einen Zeitstempel darstellen und daher
    verschiedene Zahlen enthält muß entfernt werden.

    Es sollte am Ende das Ergebnis so sein:

    0000f4e1a6a1 192.168.6.207 1127193604

    Danke

    Andreas Oetter
    :) Zirkuskater :)
    ...
     
  5. #4 Wolfgang, 20.09.2005
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Sorry hab ich wohl heut Nacht übersehen.
    Dann ganz ungetestet:
    perl -pi"_bak" -e '~s!^(.*?)\s+(\d{1,3}\.\d{1,3}\.\d{1,3})\.[^ ]+(.*)$!$1 192.$2$3!g' daten
    Gruß Wolfgang
     
  6. #5 zirkuskater, 20.09.2005
    Zuletzt bearbeitet: 20.09.2005
    zirkuskater

    zirkuskater Grünschnabel

    Dabei seit:
    19.09.2005
    Beiträge:
    4
    Zustimmungen:
    0
    fast am Ziel

    Geht leider nicht. Wirft irgendwie alle Zeilen zusammen.

    Jetzt ist leider noch ein Problem aufgetaucht.

    Ich bekomme von meinem Router doppelte Einträge zurück.

    0000f4e1a6a1 192.168.6.207 1496945 1127193604
    0000f4e1a6a1 192.168.6.207 1496944 1127193610
    0000f4e1a6a2 192.168.6.210 1496949 1127193604
    0000f4e1a682 192.168.6.212 1496945 1127193604

    Wie aus Zeile 2 ersichtlich kommt dort der Eintrag mit der MAC
    0000f4e1a6a1 doppelt vor. Ich benötige jedoch nur eine Zeile mit diesem Eintrag. Ich bekomme es leider nicht auf die Reihe das er mir jeweils doppelte
    Zeilen löscht. Der Zahlenblock vor 112719**** muß natürlich noch gelöscht werden.

    Danke

    Andreas Oetter

    Zirkuskater
     
  7. #6 Wolfgang, 20.09.2005
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Zeilen zusammenwerfen kann dieser Einzeiler nicht, da nur Zeilenweise manipuliert wird.
    Also bei mir tut diese Regexp genau was du in deinem ersten Posting wolltest.
    Wenn deine Daten natürlich ganz anders daherkommen, kann das natürlich nicht gehen.
    Sorry ich verstehe nicht so recht was du mit welchen Daten genau willst.
    Schau dir einfach mal die Daten an, und gib ein Beispiel was in welcher Form kommt und du als Ergebnis haben willst.
    Siehe auch
    man sort man uniq

    Gruß Wolfgang
     
  8. #7 Wolfgang, 20.09.2005
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Nachtrag:
    Ich gehe dabei davon aus, dass deine Daten ohne Leerzeilen und in genau der Form
    - wie im ersten Beitrag von dir beschrieben - daherkommen.
    Also schau dir die Eingabedatei nochmal genau an.

    Gruß Wolfgang
     
  9. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  10. #8 zirkuskater, 20.09.2005
    Zuletzt bearbeitet: 20.09.2005
    zirkuskater

    zirkuskater Grünschnabel

    Dabei seit:
    19.09.2005
    Beiträge:
    4
    Zustimmungen:
    0
    es geht.... supi

    Lag wohl doch an mir.
    Es geht.

    Für die doppelten Einträge verwende ich

    uniq -s 12 daten > daten_neu


    Danke für die Hilfe

    Andreas Oetter
    Zirkuskater
     
  11. #9 Wolfgang, 20.09.2005
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Schön, dass es geht.
    Bedenke aber, dass uniq nur funktioniert, wenn die Daten sortiert kommen.
    Also ist wohl eine Pipe hier recht brauchbar.
    gekürzt:
    cat datei|sort|uniq -c|perl -pe '~s....' >result_file

    Gruß Wolfgang
     
Thema:

Dateiinhalt per script anpassen

Die Seite wird geladen...

Dateiinhalt per script anpassen - Ähnliche Themen

  1. Dateiinhalte vergleichen - Neue Sätze dann ausgeben

    Dateiinhalte vergleichen - Neue Sätze dann ausgeben: Liebe Forumsmitglieder, ich benöte mal wieder Eure Hilfe: Ich möchte 2 Dateien vergleichen. Datei-1 hat z.B. 100 Datensätze mit mehreren Feldern...
  2. Dateiinhalt mit Tabs wie Original an andere Datei anhängen

    Dateiinhalt mit Tabs wie Original an andere Datei anhängen: hallo, ich habe eine Datei mit diesem Inhalt: 0 0 12 -3.616 4.788 0 0.000...
  3. awk: Dateiinhalt/Variableninhalt als Teil einer if-Anweisung

    awk: Dateiinhalt/Variableninhalt als Teil einer if-Anweisung: Hallo Ich habe folgendes Problem: Anhand dem Ergebnis einer Datenbankabfrage habe ich mir mit sed usw. einen String gebastelt und in einer Datei...
  4. Dateiinhalte multiplizieren

    Dateiinhalte multiplizieren: Hallo, ich möchte gern die Inhalte mehrerer Datein multiplizieren und das Ergebnis in eine Ergebnisdatei schreiben lassen. Beispiel:...
  5. Keine Dateiinhalte bei Freigebenen Ordnern

    Keine Dateiinhalte bei Freigebenen Ordnern: Hallo Leute ich habe seit paar tagen einen Samba Server auf meinen RHEL5 aufgesetzt und bin mit einem Windows Rechner darüber verbunden. Die...