PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem beim Löschen eines Textes mit sed



kidman81
21-06-2004, 10:31
Hallo,

ich bin neu hier und kenne mich auch nicht allzu gut mit Shellscripting aus, möchte ich mal behaupten.

Jetzt zu meinem Problem:
Ich möchte mit sed einen bestimmten Text, den ich zunächst einer Variable zuweise, löschen. Leider klappt es nicht so recht. Ich bekomme immer folgende Fehlermeldung:
sed: -e expression #1, char 0: No previous regular expression

Mein Script sieht wiefolgt aus:
#!/bin/bash

export time=`date +%H:%M`

etm=`grep -2 "etime$time" /etc/raddb/users >> /etc/raddb/deact_users`
echo "Benutzer erfolgreich kopiert."
sed -e '/'"$etm"'/d' /etc/raddb/users
echo "sed erfolgreich ausgefuehrt."

Was muss ich am sed-Befehl ändern, damit er funktioniert?

Zum grep -2 "etime$time" sei gesagt, dass da die Zeile, die den Syntax "etime$time" enthält, sowie die beiden vorangegangenen und nachfolgenden Zeilen markiert werden.
Die Zeilen, die gelöscht werden sollen, sehen folgendermaßen aus:
#expires08/15/2004
#begins06/03/2004
Benutzer Auth-Type := Local, User-Password == Benutzerpasswort #etime10:21 stime15:00

Nach der Benutzer-Zeile sind jeweils 2 Leerzeilen, da es sonst mit dem grep nicht hinhaut.

Wer kann mir also helfen?

MfG
Jan-Hendrik

roli
21-06-2004, 11:46
Hallo

Ich würde sagen das sed kommando sieht gut aus.
Aber schau dir die Variable $etm genau an!

Du grepst in einem File und leitest die Ausgabe um. Das Ergebnis geht dann nach $etm (und wenn nicht gerade ein Fehler auftritt ist das normalerweise nichts, sprich $etm bleibt leer...)

gruss
roli

kidman81
21-06-2004, 12:01
Hallo roli,

jo, hast recht...$etm ist wirklich leer.
Was kann ich machen, damit $etm nicht leer ist, sondern den Text enthält, der in die /etc/raddb/deact_users kopiert wird?

Ach ja, die Fehlermeldung vom sed-Befehl existiert immer noch (sed: -e expression #1 char 0: No previous regular expression).

Hast du ne Idee, wie ich das hinkriegen kann?

MfG
Jan-Hendrik

roli
21-06-2004, 13:23
sieh dir mal "tee" an (man tee). Damit kannst du die Ausgabe in eine Datei und gleichzeitig auf STDOUT schreiben.

gruss
roli