93578
Jan 10, 2018, updated at 09:50:34 (UTC)
1668
3
0
Nach Zeilen aus der ersten Textdatei in der zweiten Textdatei suchen und diese dort entfernen
Frohes Neues an alle!
Ich habe 2 Textdateien.
Die erste Textdatei beinhaltet Suchbegriffe, die ich in der zweiten Datei finden und löschen will. Die erste Datei ist ca. 5 MB Groß.
Datei1.txt:
Die zweite Textdatei beinhaltet Begriffe, die durchsucht (zeilneweise) und bei Übereinstimmung mit dem Begriff aus der ersten Datei gelöscht werden müssen. Die zweite Datei ist ca. 20 GB groß.
Datei2.txt:
Am Ende soll nur das Wort "mercedes" bleiben.
Bis jetzt habe ich folgendes Bash-Script benutzt (hat mein Vorgänger geschrieben):
und dann:
Leider bei solchen größen Dateien (5 MB und 20GB) dauert es mit dem GREP-Befehl zu lange (bis 1-3 Tagen) und der RAM-Kapazität reicht dafür nicht aus (trotz 64 GB RAM kommt immer wieder Speicherzugriiffsfehler, weil RAM über 100% belastet wird).
Wie kann man diese Sache beschleunigen ohne die Datei 1 auf zig kleinere Dateien unterteilen? AWK? Aber wie?
Ich habe 2 Textdateien.
Die erste Textdatei beinhaltet Suchbegriffe, die ich in der zweiten Datei finden und löschen will. Die erste Datei ist ca. 5 MB Groß.
Datei1.txt:
heinz
heinz-olaf
gunther
dennis
oxana
irene
claudia
roxana
klaus
Die zweite Textdatei beinhaltet Begriffe, die durchsucht (zeilneweise) und bei Übereinstimmung mit dem Begriff aus der ersten Datei gelöscht werden müssen. Die zweite Datei ist ca. 20 GB groß.
Datei2.txt:
heinz
heinz.musterschmidt
heinz-peter
mercedes
gunther12
gunther_mustermann
dennis-1
dennis oldways
oxana-rock
pustekuchenoxana
irene, ich liebe dich
irene34
19irene68
claudia_alpha
claudia-beta
claudia-gamma
roxana aus roxet
roxana-bilbao
klaus-maus
superklaus
Am Ende soll nur das Wort "mercedes" bleiben.
Bis jetzt habe ich folgendes Bash-Script benutzt (hat mein Vorgänger geschrieben):
#!/bin/bash
if [ $# -ne 1 ];
then
echo "usage: ./clean.sh original.txt > neu.txt"
exit 2
fi
grep -v -f Datei1.txt $1
und dann:
./clean.sh Datei2.txt > neu_aus_Datei2.txt
Leider bei solchen größen Dateien (5 MB und 20GB) dauert es mit dem GREP-Befehl zu lange (bis 1-3 Tagen) und der RAM-Kapazität reicht dafür nicht aus (trotz 64 GB RAM kommt immer wieder Speicherzugriiffsfehler, weil RAM über 100% belastet wird).
Wie kann man diese Sache beschleunigen ohne die Datei 1 auf zig kleinere Dateien unterteilen? AWK? Aber wie?
Please also mark the comments that contributed to the solution of the article
Content-Key: 360560
Url: https://administrator.de/contentid/360560
Printed on: April 27, 2024 at 00:04 o'clock
3 Comments
Latest comment
Mal sed benutzen
Logdateien bereinigen mit sed
Logdateien bereinigen mit sed