Hallo,
ich habe eine Textdatei (Pro Zeile ein Wort) und eine Blacklist (Pro Zeile ein Wort).
Wie kann ich die Wörter der Blacklist aus der Textdatei entfernen?
Wie kann ich z.B. mit sed eine Variable verwenden?
sed 's/$LINE//g' textdatei.txt > textdatei_clean.txt
funktioniert z.B. nicht.
Herzlichen Dank für Euere Hilfe
Manfred
Wörter einer Blacklist aus einer Textdatei löschen...
hm ich würde das mittels perl oder tcl script lösen
Einfach zwei schleifen, die eine liest die blacklist aus, die andere die Liste zu löschender Wörter .. danach gibts halt bei jedem \n read aus der blacklist nen abgleich durch die gesamte andere List wenn es matched => weg damit wenn nicht zum nächsten blacklist wort ...
Einfach zwei schleifen, die eine liest die blacklist aus, die andere die Liste zu löschender Wörter .. danach gibts halt bei jedem \n read aus der blacklist nen abgleich durch die gesamte andere List wenn es matched => weg damit wenn nicht zum nächsten blacklist wort ...
Intel Pentium E2180 @ 3,2 Ghz / Geforce 8800GT / 4096 MB DDRII 800 / 320GB Seagate 7200.11 HDD
running debian 'sid' kernel 2.6.26-rc7/Gnome 2.22
running debian 'sid' kernel 2.6.26-rc7/Gnome 2.22
Hi ManfredG,
hier mal eine Lösung in Python:
Du kannst das Script einfach mit
blacklist.py --in=eingabedate --out=ausgabedatei --blacklist=blacklist
aufrufen. wenn kein --in angegeben wird wird von stdin gelesen, entsprechend wenn kein --out angegeben ist nach stdout geschrieben, --blacklist= ist optional, es wird dann das erste argument als Dateiname der blacklist angesehen
blacklist.py blacklist.txt
gibt die Eingabe aus der Standardeingabe gefiltert durch "blacklist.txt" nach Standardausgabe aus
Gruß
Dookie
hier mal eine Lösung in Python:
Code: Alles auswählen
#!/usr/bin/env python
import sys
from optparse import OptionParser
if __name__ == "__main__":
# OptionParser initialisieren
usage = "usage: %prog [options] [blacklist]"
parser = OptionParser(usage)
parser.add_option("-i", "--in", dest="infile",
help="read data from INFILE")
parser.add_option("-o", "--out", dest="outfile",
help="write data to OUTFILE")
parser.add_option("-b", "--blacklist", dest="blacklist",
help="FILENAME of blacklist")
# Programmargumente und Optionen auswerten
options, args = parser.parse_args()
if len(args) == 1:
blfile = open(args[0], 'r')
elif options.blacklist is not None:
blfile = open(optons.blacklist, 'r')
else:
parser.error("no blacklist defined!")
infile = open(args[0])
if options.infile is not None:
infile = open(options.infile, 'r')
else:
infile = sys.stdin
if options.outfile is not None:
outfile = open(options.outfile, 'w')
else:
outfile = sys.stdout
# Datei filtern
blacklist = blfile.read().split()
blfile.close()
for line in infile:
if line.strip() not in blacklist:
outfile.write(line)
blacklist.py --in=eingabedate --out=ausgabedatei --blacklist=blacklist
aufrufen. wenn kein --in angegeben wird wird von stdin gelesen, entsprechend wenn kein --out angegeben ist nach stdout geschrieben, --blacklist= ist optional, es wird dann das erste argument als Dateiname der blacklist angesehen
blacklist.py blacklist.txt
gibt die Eingabe aus der Standardeingabe gefiltert durch "blacklist.txt" nach Standardausgabe aus
Gruß
Dookie
Re: Wörter einer Blacklist aus einer Textdatei löschen...
In diesem Falle musst du " anstatt ' benutzen, damit die Variablensubstitution stattfindet:ManfredG hat geschrieben:sed 's/$LINE//g' textdatei.txt > textdatei_clean.txt
funktioniert z.B. nicht.
Code: Alles auswählen
$ echo '$PWD'
$PWD
$ echo "$PWD"
/tmp