[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: sed: -e expression #1, char 18: unterminated `s' command [OT]





Le 18/02/2021 à 11:11, Christian Knoke a écrit :
Moin,

Klaus Becker schrieb am 18. Feb um 10:31 Uhr:
Le 17/02/2021 à 21:23, Christian Knoke a écrit :
Klaus Becker schrieb am 17. Feb um 18:56 Uhr:
n'Abend,

in einem Skript habe ich dutzende Zeilen wie

"sed -i '/Anzeige/Id' druck.txt"

um aus Texten bestimmte Zeilen zu löschen. Nun bekomme ich obige
Fehlermeldung.

sed verwendet den ersten Parameter auf der Kommandozeile, der keine Option
ist, als Script, hier ist das: '/Anzeige/Id' .  Die Fehlermeldung bemängelt
ein s Kommando, also enthält das Script wohl ein s Kommando, das ist ein
Ausdruck, der mit einem kleinen s beginnt (für search and replace).

Das bedeutet, du verwendest das sed Programm falsch. Einerseits gibt es
Optionen (mit - am Anfang), andererseits Script-Kommandos.

ein klein wenig kenne ich sed schon. Ich erkläre mal den Hintergrund:

ich kopiere oft Webseiten in die Datei "druck.txt", behandle sie mit meinem
Skript und kopiere dann das Ergebnis in Libreoffice zum drucken.

Da habe ich in "druck.odt" nur Text und keine Textabschnitte, die immer
wiederkommen und die ich nicht drucken will wie z. B. Werbung. Das mache ich
schon seit Jahren, und es funktionniert.

Gute Sache.

Ich glaube also nicht, dass ich sed falsch benutze.

Nein, sieht nicht so aus. Dennoch..

Manchmal komme neue Motive zum Skript dazu, und es kommt schon mal vor, dass
ich Fehler begehe. Meist finde ich die ziemlich schnell.

Ich habe auch im Skript "-s" gesucht, wird aber nicht gefunden.

Die Fehlermeldung (hier im Betreff) bemängelt ein "s"-Kommando, keine
"-s"-Option. Es gibt also einen Ausdruck in der Aufrufzeile von sed in
deinem Script, der von sed als sed-Script interpretiert wird und der mit dem
kleinen Buchstaben "s" beginnt (oder einen Variablen, die den Wert "s"
annimmt, oder, oder, oder ...)

   chris@leo:~$ sed
   Aufruf: sed [OPTION] ¿ {Skript-falls-kein-anderes-Skript} [Eingabedatei] ¿

Empfehlung: alle sed-Scripte mit -e einleiten, dann fallen Fehler besser auf.

Wo gehört das "-e" hin?


Und zum Schluss: vielleicht ein Quoting-Problem? --> man bash --> QUOTING .

Gruß
Christian


Ich hab's schließlich gefunden: in einer Zeile hatte ich am Beginn statt
"sed -i '/..." "sed -i 's/...".

Wie ich das mit "bash -x" oder so hätte finden können, ist mir aber immer noch nicht klar.

Auf jeden Fall schon mal Dank für alle Antworten.

Klaus


Reply to: