man sed
sagt:
-f script-file,
das kann viele Zeilen a la s/zu ersetzende Wörter/ERSETZUNGSTEXT/g
enthalten.
also
s/foo/Platzhalter/g
s/bar/Platzhalter/g
diese Datei wiederum kann man aus einer Wortliste erzeugen:
foo
bar
Das geht mit einem schnellen Skript:
#!/bin/bash
### make-sed-skript.sh
flag="true";
while [ ${flag} = "true" ];
do
read zeile;
zeile=$(echo -e "${zeile}" | tr -d "\n\r");
zeile=$(echo -e "${zeile}" | sed "s/\//\/");
if [ -n "${zeile}" ];
then
echo "s/${zeile}//g";
else
flag="false";
fi
done;
Aufruf:
cat woerter.txt | ./make-sed-skript.sh > delete.sed
Ergebnis (delete.sed):
s/foo//g
s/bar//g
jetzt also:
sed -f delete.sed < deineTextdatei
Beachte bitte, dass da auch ggf. auch noch eine Reihe von speziellen, in regulären Ausdrücken benutzte Zeichen "escaped" werden müssen ("*" > "*", "/" > "/" e.t.c.) Alternativ bringt Dich vielleicht auch man sed
und das Beispiel
echo "foo Bar baz" | sed -r "s/foo|bar/platzhalter/gi";
weiter. Aber auch hier muss das s/foo\|bar/platzhalter/gi
in einer Textdatei untergebracht werden, weil die Zeilenlänge ggf. beschränkt und die Wortliste zu lang ist. Beachte das "sed -r" für "erweiterte reguläre Ausdrücke". Sonst will sed das nicht können.