Konvertieren von Großbuchstaben in Kleinbuchstaben sowie Ändern von Leerzeichen in Text in einer Datei mithilfe von SED

StackOverflow https://stackoverflow.com//questions/24026824

Frage

Ich habe HTML-Text, dessen URL-Text ich korrigieren muss.Ich muss:

1) Konvertieren Sie den Text innerhalb der URL in Kleinbuchstaben auch 2) Umwandlung von Räumen in Bindestriche innerhalb der URL auch 3) Löschen einer Klammer aus der URL

Dieses Muster kommt in jeder Datei mehrfach vor:

<div class="classname"><a href="/URL"><img src="${asset.image/url}" alt="TEXT" class="another-class-name" ></a></div>

Beispiel:
Ich möchte dieses Muster ändern: <div class="classname"><a href="/URL-EXAMPLE-ONE"><img src="${asset.image/url}" alt="TEXT" class="another-class-name" ></a></div>

Zu: <div class="classname"><a href="/url-example-one)"><img src="${asset.image/url}" alt="TEXT" class="another-class-name" ></a></div>

Ich habe mehrere Dateien und möchte eine Infile-Ersetzung durchführen.Der /URL-EXAMPLE-ONE könnte eine beliebige Kombination aus SPACE und Klammern haben.

Aus einem früheren Vorschlag verwende ich das folgende SED-Skript:

/sw/bin/sed -e '/<div class="mk-man-logo-mod5-m"><a href="\/[A-Z -{}&]*"></ {
   h;
   s/.*<div class="mk-man-logo-mod5-m"><a href="\/\(.*\)"><img.*/\1/;
   s/\(.*\)/\L\1/;
   s/[ &]/-/g;
   s/[()]//g;
   s/<img.*//;
   x;
   s/\(.*<div class="mk-man-logo-mod5-m"><a href="\/\)\(.*\)\(<img.*\)/\1\3/;
   G;
   s/\n//;
   }' $e

Aber die Ausgabe, die ich erhalte, ist als Beispiel:

Original Text: <div class="classname"><a href="/ABC (D&E)"><img src="${asset.images/common/manufacturer_logos/medium/abb-m.gif}" alt="TEXT" class="another-classname" ></a></div>

Transformierter Text: <div class="classname"><a href="/<img src="${asset.images/url}" alt="TEXT" class="another-classname" abc-d-ediv>

Eigentlich möchte ich: <div class="classname"><a href="/abc-d-e"><img src="${asset.images/url}" alt="TEXT" class="another-classname"></a></div>

Könnte jemand weiterhelfen?Ich habe viele Stunden damit verbracht;Ich bin kein SED-Experte, denke aber, dass ich hier nah dran bin, aber etwas übersehe.

Vielen Dank im Voraus, Alex

War es hilfreich?

Lösung

Das scheint zu funktionieren:

sed '
\#<div class="mk-man-logo-mod5-m"><a href="/[A-Z &()-]\+"# {
  h
  s#<div class="mk-man-logo-mod5-m"><a href="/[A-Z &()-]\+##
  x
  s#.*href="/\(.*\)"><img src.*#\1#
  s#.*#\L&#
  s#[ &]#-#g
  s#[()]##g
  s#^#<div class="mk-man-logo-mod5-m"><a href="/#
  G
  s#\n##
}'
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top