Schnellere Alternative zu sed -f gesucht

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
mino23
Beiträge: 64
Registriert: 15.07.2019 18:49:51

Schnellere Alternative zu sed -f gesucht

Beitrag von mino23 » 07.05.2020 16:09:26

Ich lösche aus einer Masterdatei regelmäßig bestimmte Zeilen. Das mache ich mit

sed -f masterdatei Löschbegriffedatei > bereinigteDatei

In der Datei Löschbegriffe sind die zu löschenden strings hinterlegt, also

/blablabla$/d
...

Ich nutze einen Lenovo T420 und der erledigt diesen Bereinigungsvorgang immer langsamer. Das fing damals bei 6 oder 7 MB an. Mittlerweile ist die Masterdatei ca. 23 MB groß und die Datei mit den Löschbegriffen ca. 90KB. Auf dem Lenovo dauert der Löschvorgang aktuell rund 12 Minuten.

Leider kenne ich mich mit perl, grep, awk usw. nicht aus. Gibt es da möglicherweise schnellere Alternativen?

Benutzeravatar
Meillo
Moderator
Beiträge: 8813
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Schnellere Alternative zu sed -f gesucht

Beitrag von Meillo » 07.05.2020 16:46:07

Code: Alles auswählen

fgrep -xvf Löschbegriffedatei masterdatei  > bereinigteDatei
(Evtl. ohne `-x' oder mit `egrep', je nachdem wie die Patterns aussehen.)
Use ed once in a while!

mino23
Beiträge: 64
Registriert: 15.07.2019 18:49:51

Re: Schnellere Alternative zu sed -f gesucht

Beitrag von mino23 » 14.05.2020 18:18:44

Danke @Meillo, ich werde das bei nächster Gelegenheit testen und mich danach wieder melden.

Benutzeravatar
Meillo
Moderator
Beiträge: 8813
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Schnellere Alternative zu sed -f gesucht

Beitrag von Meillo » 14.05.2020 18:25:48

mino23 hat geschrieben: ↑ zum Beitrag ↑
14.05.2020 18:18:44
Danke @Meillo, ich werde das bei nächster Gelegenheit testen und mich danach wieder melden.
Klasse. Ich bin schon auf die Laufzeitunterschiede gespannt. Ebenso welcher Art die Regexps sind und folglich, welche Variante des Befehls am besten passt. Halte uns also unbedingt auf dem Laufenden. ;-)
Use ed once in a while!

Antworten