Leerzeichen, Großbuchstaben, HTML Tags entfernen mittels SED

B

Bamboo156

Grünschnabel
Hallo zusammen.

Ich habe folgendes Anliegen:
Ich habe eine HTML Datei mit entsprechenden Tags usw. . Diese möchte ich in eine normale Textdatei mittels sed konvertieren und dabei diverse Aufgaben erledigen. Der Text zwischen den Tags <hx> und </hx> soll in Großbuchstaben mit einem Leerzeichen zwischen den Buchstaben, drei Leerzeichen zwischen den Worten und abschließend noch die Tags entfernt werden.

Ich lerne gerade Linux/sed/Terminal kennen und hänge hier an vielleicht trivialen Dingen.

Ich war natürlich nicht ganz untätig und habe gerade folgende Dinge bereits gemacht.

s!\<h1\>.*\<h1\>!\U&!g; #für die Großbuchstaben
s!.!& !g; #Leerzeichen, aber nach JEDEM Zeichen. Nicht nur innerhalb der Tags.
s!<[^>]*>!!g; #alle Tags entfernen

Dazu habe ich noch alle HTML Umlaute in "normale" Umlaute geändert und die prinzipielle Ausgabe in .txt klappt auch. Ich schreibe das alles in einem sed-Skript mittels gedit bzw vim.

Ich wäre euch dankbar für Tipps und Hilfe.
 
Zuletzt bearbeitet:
Mal auf die Schnelle, vielleicht hilft es ja:

Code:
#!/bin/bash
html='aaa <H1>bla blub blob</H1> bbb'
#echo "vorher: $html"
# Header finden und extrahieren, in Grossbuchstaben wandeln

#was vor dem h1 steht merken
preheader=$(echo $html|sed -r 's:(.*)(<H[0-9]>.*</H[0-9]>)(.*):\1:')
echo "Preheader:"
echo "$preheader"

#was nach dem h1 steht merken
postheader=$(echo $html|sed -r 's:(.*)(<H[0-9]>.*</H[0-9]>)(.*):\3:')
echo "Postheader"
echo "$postheader"

# header part suchen
html=$(echo $html|sed -r 's:(.*)(<H[0-9]>)(.*)(</H[0-9]>)(.*):\U\3:')
echo $html


# header umbauen....
#   Tags entfernen
html=$(echo $html|sed -r 's:<[^>]*>::g')
echo "evt tags im header entfernen:"
echo "$html"

#    1 LZ -> 3 LZ
html=$(echo $html|sed -r 's/ /   /g')
echo "ein <space> wird zu 3 <space>:"
echo "$html"

# 1 LZ zwischen jeden Buchstaben
html=$(echo $html|sed -r 's:[^^][a-z]*:& :g')
echo "<space> zw. jedem Buchst einfügen:"
echo "$html"
echo ""
echo "jetzt wieder komplett:"
echo "$preheader $html $postheader"
 
Hey, danke fuer die Antwort. Das hat mir serh weitergeholfen. :)
 

Ähnliche Themen

Probleme mit sed: im Text eine Zeile in Großbuchstaben ?

HTML-Tags entfernen

Whitespaces löschen mittels "sed"

textToHTML - Textdatei mittels sed in HTML umwandeln

Textdatei manipulieren mittels sed

Zurück
Oben