[EasyLinux-Ubuntu] mit sed TABs entfernen

Uwe Herrmuth u.herrmuth at gmx.de
Di Nov 28 08:47:28 CET 2017


Hallo Matthias, hallo Hartmut,

Hartmut schrieb am 27.11.2017 um 18:27:

> Kannst Du mal Dein Skript und eimn, zwei Beispielzeilen schicken?

Es geht um einen großen Sack voll Webseiten, die alle mal in grauer
Vorzeit mit LO als WYSIWYG-Editor erstellt wurden und jetzt
designtechnisch etwas aufgehübscht und vom Inhalt her etwas verändert
werden sollen. Um nicht jede Datei einzeln anfassen zu müssen, was
Jahre dauern würde, hab ich beim Austausch von z.B. Schriftarten,
Linkzielen und Inhalten viel mit sed gearbeitet. Jetzt komme ich aber
beim Austausch von Inhalten an eine Grenze, da LO beim Erstellen
offensichtlich Zeilenumbrüche eingefügt hat, die zwar bei der Ansicht
im Browser nicht relevant sind, mir aber bei der Umwandlung mit sed
das Leben schwer machen, weil der zu suchende Begriff u.U. in zwei
Zeilen steht. Beispiel:

<p>Uwe
Herrmuth</p>

Wenn ich hier Uwe Herrmuth durch Matthias Müller ersetzen wollte,
scheitert sed, weil der gesamte Suchbegriff in zwei Zeilen aufgeteilt
ist.

Matthias schrieb am 27.11.2017 um 22:51:

> Lass mal sehen, was du gemacht hast und wie deine RE aussieht.

Ich hatte also vor, erst mal alle Zeilenumbrüche von LO zu eleminieren,
bevor ich den Ersetzungsdurchlauf starte, so dass als Ergebnis z.B.

<p>Uwe Herrmuth</p>

raus kommt. Der sed-Befahl dazu sieht im Moment so aus:

sed -i '/[^(>|\})+]$/{s/$/&hilfstext/; N; s/\t//g; s/\n//; s/hilfstext/ /}'

Quasi wird an alle Zeilen, die nicht auf > oder } enden der Text
hilfstext angefügt, dann die nächste Zeile angefügt, dann alle TABs
entfernt, dass Zeilenumbruchzeichen \n raus genommen und hilfstext
durch ein Leerzeichen ersetzt.
Wahrscheinlich könnte ich mir das Anfügen des Hilfstextes sogar sparen,
wenn ich das \n gleich durch ein Leerzeichen ersetze, fällt mir gerade
auf. Müsste ich mal probieren.
Das klappt auch ganz gut nur mit der Ersetzung der TABs bin ich noch
nicht zufrieden. Im Quelltext sind natürlich Einrückungen vorhanden,
so dass der Ursprung z.B. so aussieht:

	<p>Uwe
	Herrmuth</p>

Ohne die TABs zu entfernen würde daraus

	<p>Uwe 		Herrmuth</p>

was beim nachfolgenden Ersetzungsdurchlauf auch wieder
Schwierigkeiten machen würde. Es geht also darum letztendlich hier
jetzt noch die TABs zu entfernen, die nicht am Zeilenanfang stehen.
Somit würden die Einrückungen erhalten bleiben.
Entweder direkt durch obigen sed-Befehl oder in einem extra sed nach
dem ersten, was egal wäre, da das eh in einem Script liegt.

Viele Grüße
Uwe

-- 
Debian GNU/Linux 9.2 (stretch) Kernel 4.9.51-1 Xfce 4.12

Sag NEIN zu globalen Spionageprogrammen!
<https://prism-break.org/#de>

<http://www.frankgehtran.de/>
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : nicht verfügbar
Dateityp    : application/pgp-signature
Dateigröße  : 195 bytes
Beschreibung: Digitale Signatur von OpenPGP
URL         : <http://www.easylinux.de/pipermail/ubuntu/attachments/20171128/80e9e34a/attachment.pgp>


Mehr Informationen über die Mailingliste Ubuntu