2 gleiche Zeilen in 2 Dateien löschen

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von calomatic, 31.03.2006.

  1. #1 calomatic, 31.03.2006
    calomatic

    calomatic Mitglied

    Dabei seit:
    23.03.2006
    Beiträge:
    35
    Zustimmungen:
    0
    Hallo!

    ich habe 2 Dateien:

    1. Datei:
    abc
    abcd

    2. Datei:
    dskl
    abc
    jkll
    abcd

    Ich möchte nun die Zeilen aus Datei 2, die schon in Datei 1 vorhanden sind, löschen.

    Code:
    cat datei2 | while read input_datei2;
        do	
    	grep "$input_datei2" datei1
    	if [ $? = 1 ]; then
    	    echo "$input_datei2" >> new_datei2
    	fi
        done
    
    Das funktioniert bei mir nicht, die new_datei2 ist genauso groß wie datei2 .. sprich es wurden keine Zeilen entfernt. Ich wollte mit dem Skript nur die Zeilen weiterleiten die in datei1 nicht gefunden wurden.

    MfG Sascha
     
  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 supersucker, 31.03.2006
    supersucker

    supersucker Foren Gott

    Dabei seit:
    21.02.2005
    Beiträge:
    3.873
    Zustimmungen:
    0
    nur so ein gedanke:
    warum machst du nicht ein diff mit den beiden dateien und leitest alle zeilen die nicht in beiden gleich sind in ein neues file um?

    das ist das gleiche wie doppelte zeilen zu entfernen nur das es schneller geht.
     
  4. #3 calomatic, 31.03.2006
    Zuletzt bearbeitet: 31.03.2006
    calomatic

    calomatic Mitglied

    Dabei seit:
    23.03.2006
    Beiträge:
    35
    Zustimmungen:
    0
    ok probier ich mal! :)

    Code:
    diff datei1 datei2 > new_datei2
    ah ok .. das funktioniert! Danke.

    Kann man da auch die Formatierung ausstellen?

    der Code von oben bringt mir:

    Code:
    0a1
    > dskl
    1a3
    > jkll
    Ich möchte aber nur die Zeilen die nicht in datei1 vorkommen .. ohne den Schnick Schnack. ;)
     
  5. rikola

    rikola Foren Gott

    Dabei seit:
    23.08.2005
    Beiträge:
    2.133
    Zustimmungen:
    0
    Das gab's hier schonmal. Die Antwort:
    Code:
    fgrep -v datei1 datei2 > new_datei2
    
     
  6. #5 calomatic, 31.03.2006
    calomatic

    calomatic Mitglied

    Dabei seit:
    23.03.2006
    Beiträge:
    35
    Zustimmungen:
    0
    Danke, habe mir mal man fgrep angeguckt und das müsste eigentlich funktionieren! Aber new_datei2 hat genau den selben Inhalt wie datei2 wie kann das sein? :think:
     
  7. #6 ninguno, 31.03.2006
    ninguno

    ninguno Tripel-As

    Dabei seit:
    13.05.2005
    Beiträge:
    162
    Zustimmungen:
    0
    vielleicht so?
    Code:
    grep -vf datei1 datei2
     
  8. #7 calomatic, 31.03.2006
    calomatic

    calomatic Mitglied

    Dabei seit:
    23.03.2006
    Beiträge:
    35
    Zustimmungen:
    0
    Ja! Das ist es. Warum bin ich da nicht selber drauf gekommen.

    Danke! :D
     
  9. rikola

    rikola Foren Gott

    Dabei seit:
    23.08.2005
    Beiträge:
    2.133
    Zustimmungen:
    0
    Jo, meine Schuld. Ich dachte, fgrep sei ein Synonym fuer 'grep -f', ist aber eins fuer 'grep -F'.

    Code:
    grep -vf datei1 datei2
    
    sollte also funktionieren,wie ninguno schon meinte, solange datei1 keine Leerzeile enthaelt
     
  10. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  11. #9 calomatic, 31.03.2006
    Zuletzt bearbeitet: 31.03.2006
    calomatic

    calomatic Mitglied

    Dabei seit:
    23.03.2006
    Beiträge:
    35
    Zustimmungen:
    0
    Ah, wieso das? Warum kommt es mit leeren Zeilen nicht klar?

    Mist, mit den beiden Testdateien funktioniert das wunderbar .. aber mit meinen richtigen Dateien wo die Einträge so aussehen:

    Code:
    ...
    127.0.0.1 - - [2006/Mar/22:05:51:06 +0100] "GET /Datei" 403 34
    ...
    
    leider nicht. Wahrscheinlich muss ich dann wieder alle Sonderzeichen auskommentieren. ;(
     
  12. #10 Wolfgang, 31.03.2006
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Versuch es mal mit der zusätzlichen Option -F.
    Ungetestet!
    grep -vFf datei1 datei2

    Gruß Wolfgang
     
Thema:

2 gleiche Zeilen in 2 Dateien löschen

Die Seite wird geladen...

2 gleiche Zeilen in 2 Dateien löschen - Ähnliche Themen

  1. Zeilen gleichen Inhalts durchnummerieren - AWK? SED?

    Zeilen gleichen Inhalts durchnummerieren - AWK? SED?: Hi, ich habe eine Datei, in der sich die einzelnen Zeilen unterschiedlich oft wiederholen, z.B. 10 10 23 23 23 23 45 45 45 Ich...
  2. awk: Bestimmte Spalten in zwei Zeilen vergleichen

    awk: Bestimmte Spalten in zwei Zeilen vergleichen: Moin zusammen! Ich hab ein (glaube ich) ziemlich einfaches Problem mit awk: Wie vergleiche ich, in einer Datei, ein Feld einer Zeile mit exakt...
  3. Art-preisliste: zeilen mit gleichen Preisen aber diff. wert in best. spalte entfernen

    Art-preisliste: zeilen mit gleichen Preisen aber diff. wert in best. spalte entfernen: hallo, ich hab' da ein problem: folgende datei mit verschiedenen artikelpreisen muss "ausgemistet" werden: . . 1a,2b3c-4d...
  4. 2 Dateien zeilen-weise vergleichen

    2 Dateien zeilen-weise vergleichen: Hallo an Alle ich habe 2 Dateien, einmal ne Gesamtliste gliste und ne Neuliste nliste in beiden stehen Benutzernamen und zwar zeilenweise, so...
  5. Alle Dateien eines Verzeichnisses mit einer anderen Datei vergleichen

    Alle Dateien eines Verzeichnisses mit einer anderen Datei vergleichen: Hallo, ich habe ein Verzeichnis, darin enthalten sind mehrere Dateien. Nun möchte ich alle Dateien (Parameter $1) gegen eine konstante Datei...