sed: Aus einer Zeile ein Wort löschen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
thilo
Beiträge: 241
Registriert: 12.12.2002 22:48:44

sed: Aus einer Zeile ein Wort löschen

Beitrag von thilo » 16.02.2004 09:14:24

Hallo!

Zur Zeit mache ich meine ersten Gehversuche mit "sed" und bin auf folgendes Problem gestoßen:

Mein Provider setzt Spamassassin ein. Spam-Nachrichten werden dadurch gekennzeichnet, dass die Zeichenfolge [SPAM] an den Anfang der Betreffzeile eingefügt wird.

Nun möchte ich gerne erreichen, dass die vom ISP eingefügte Zeichenfolge wieder entfernt wird. Dazu habe ich folgendes probiert:

Code: Alles auswählen

#!/bin/bash

grep -B 2 "^  Folder: /usr/sbin/sendmail -oi spam" /home/thilo/procmail.log | \
sed -e 's/ Subject: \[SPAM\]/ Subject: /'
Leider funktioniert das nicht 100%ig: Nach " Subject: " wird zwar das "[SPAM]" gelöscht, allerdings wird ein Leerzeichen eingefügt!

So sieht die Original-Procmail-Logdatei aus:

Code: Alles auswählen

.....
 Subject: [SPAM] Order viagra now
  Folder: /home/thilo/Maildir/blablabla
.....
So wäre die Ausgabe richtig:

Code: Alles auswählen

.....
 Subject: Order viagra now
  Folder: /home/thilo/Maildir/blablabla
.....
Uns so sieht sie zur Zeit aus:

Code: Alles auswählen

.....
 Subject:  Order viagra now
  Folder: /home/thilo/Maildir/blablabla
.....
Die beiden rechten Spalten stehen also nicht untereinander!

Wo liegt mein Fehler?

Vielen Dank für Eure Mühe!

Gruß,

Thilo

keyem
Beiträge: 303
Registriert: 23.08.2002 07:50:28
Wohnort: Berlin

Beitrag von keyem » 16.02.2004 09:52:43

Hi thilo,

das Problem liegt darin, dass das auf "[SPAM]" folgende Leerzeichen nicht entfernt wird, dadurch kommt es zu den zwei aufeinanderfolgenden Leerzeichen.

HTH, keyem

Antworten