Ubuntu-Austria Foren-Übersicht
Portal  •  Forum  •  Profil  •  Suchen   •  Registrieren  •  Einloggen, um private Nachrichten zu lesen  •  Login   

 Maskieren von Sonderzeichen [gelöst]

Neues Thema eröffnenNeue Antwort erstellen
Autor Nachricht
Gast











BeitragVerfasst am: 11.01.2011, 03:27    Maskieren von Sonderzeichen [gelöst] Antworten mit ZitatNach oben

Hallo,

So - mit SED und for;;undo komme ich zu Recht, aber jetzt habe ich ein Problem mit der Maskierung von Sonderzeichen.

Bei dem Befehl:
Hab ich die Sonderzeichen <, > und \ mit \ maskiert

for i in *.html; do sed -i.nul s/\<h4\>\<a href="h_\*.html" style="text-decoration: none;"\>// "$i"; done


Bekomme ich die Fehlermeldung:
sed: -e Ausdruck #1, Zeichen 8: Nicht beendeter `s'-Befehl

Für mich schaut es aus, als ob es sich um das "<" handelt.

Hannes
PS: Neuen Thread angelegt, weil Maskierung nicht nur den Befehl SED betrifft.


Zuletzt bearbeitet von Gast am 12.01.2011, 02:45, insgesamt einmal bearbeitet


Desktop: anderer

Version: 16.04

Hardware: Notebook

Architektur: 64Bit


Zuletzt bearbeitet von Gast am 12.01.2011, 02:45, insgesamt einmal bearbeitet
Online    
Gast











BeitragVerfasst am: 11.01.2011, 22:50    (Kein Titel) Antworten mit ZitatNach oben

Was passiert, wenn Du auf der Kommandozeile Leerzeichen machst?
Was passiert, wenn Du auf der Kommandozeile Argumente nicht unter Hochkomma setzt?
Wer evaluiert zuerst Deine Escape-Sequenzen (Backslash) und Hochkommas, das sed oder die bash?

Schreib mal an, was dem sed Programm tatsächlich in den Argumentbuffer übergeben wird, und wieviele Argumente mit welchem Inhalt sind es?

Also,
Arg0="sed"
Arg1="-i.nul"
Arg2="s/.........???


Desktop: anderer

Version: 16.04

Hardware: Notebook

Architektur: 64Bit
Online    
Gast











BeitragVerfasst am: 12.01.2011, 02:44    (Kein Titel) Antworten mit ZitatNach oben

« kappa » hat folgendes geschrieben:
Was passiert, wenn Du auf der Kommandozeile Leerzeichen machst?
Was passiert, wenn Du auf der Kommandozeile Argumente nicht unter Hochkomma setzt?

Das wars (Hochkomma) - die Leerzeichen haben mir den Spaß verdorben. Dabei hab ich es doch gewusst, aber schon lange nicht mehr derartiges in der Kommando-Zeile gemacht (weder Linux noch DOS)
Zitat:
Schreib mal an, was dem sed Programm tatsächlich in den Argumentbuffer übergeben wird, und wieviele Argumente mit welchem Inhalt sind es?

Es soll die Zeichenkette
<h4><A HREF="h_20100519.html" style="text-decoration:none"> Thumbnails </a></h4>

entfernt werden, also durch nichts ersetzt werden, wobei der Zahlenteil des Argumentest (20100519) sich von Datei zu Datei ändert.
Jetzt bin ich auf die Lösung gekommen:
Ich kann, wenn ich das Argument s/a/b in Hochkomma setze, keine Platzhalter mehr verwenden, daher:
Schritt 1:
sed -i.nul s/h_\.\.\.\.\.\.\.\..html// Dateiname

und als zweiten Schritt:
sed -i.nul 's/<h4><A HREF="" style="text-decoration:none"> Thumbnails <\/a><\/h4>//' Dateiname

wobei ich die beiden "/" im Suchtext mit "\" maskieren musste (sonst gehts nicht).

Danke für die Hilfe

Hannes


Desktop: anderer

Version: 16.04

Hardware: Notebook

Architektur: 64Bit
Online    
Beiträge der letzten Zeit anzeigen:      
Neues Thema eröffnenNeue Antwort erstellen


 Gehe zu:   



Berechtigungen anzeigen


Forensicherheit

1008050261051 Angriffe abgewehrt

Powered by Orion based on phpBB © 2001, 2002 phpBB Group
CBACK Orion Style based on FI Theme
Alle Zeiten sind GMT + 2 Stunden



[ Page generation time: 0.2172s (PHP: 16% - SQL: 84%) | SQL queries: 36 | GZIP enabled | Debug off ]