Ich werde verrückt versuchen, die sed
BRE (Basic Regular Expression) Regeln zu folgen, um eine ziemlich einfache Vorkommen in einer HTML-Datei zu ersetzen.Verwenden von SED, um variablen Text in HTML-Datei zu ersetzen
Ich denke, ich folge the spec korrekt, aber keiner meiner Versuche funktionieren.
Was ich tun möchte ist, den Inhalt eines Meta-Tags durch etwas Neues zu ersetzen (was ich als Teil des Skripts, das ich schreibe, berechne). Grundsätzlich sieht das Meta-Tag wie folgt aus:
<meta version="v0.103.2" />
Es ist immer ein Attribut enthält, die die Syntax folgt, die in einem JS regulären Ausdruck könnte so charakterisiert werden:
/version=\"v[0-9]+\.[0-9]+\.[0-9]+\"/g
Also ich Ich habe eine ganze Reihe von sed-Befehlen ausprobiert, um das funktionieren zu lassen, und es scheint einfach nicht so zu funktionieren, wie es dokumentiert ist, es sei denn, ich missverstehe die Dinge. Einige der Befehle, die ich versucht habe:
Ich bin auf einem Mac (die wegen
sed
syntax changes between Unix/Linux Angelegenheiten), und dies erklärt die''
in folgenden Befehle.
✗ sed -i -E '' s/version=\"v[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+/version=\"whatever/g ./src/index.html ✗ sed -i -E '' s/version=\"v[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+/version=\"whatever/g './src/index.html' ✗ sed -i -E s/version=\"v[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+/version=\"whatever/g ./src/index.html ✗ sed -i -E s/version=\"v[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+/version=\whatever/g ./src/index.html ✗ sed -i -E s/version=\"v[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+/version=\"whatever/g ./src/index.html ✗ sed -i '' s/version=\"v[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+/version=\"whatever/g ./src/index.html ✗ sed -i '' s/version=\"v[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+/version=\whatever/g ./src/index.html ✗ sed -i '' s/version=\"v[:digit:]+\.[:digit:]+\.[:digit:]+/version=\whatever/g ./src/index.html ✗ sed -i '' s/v[:digit:]+\.[:digit:]+\.[:digit:]+/whatever/g ./src/index.html ✗ sed -i '' s/v[:digit:]+[:punct:][:digit:]+[:punct:][:digit:]+/whatever/g ./src/index.html ✗ sed -i '' s/v[:digit:][:punct:][:digit:][:digit:][:digit:][:punct:][:digit:]+/whatever/g ./src/index.html ✗ sed -i '' s/v[:digit:][:punct:][:digit:][:digit:][:digit:][:punct:][:digit:]/whatever/g ./src/index.html ✗ sed -i '' s/v[0-9]+\.[0-9]+.[0-9]+/whatever/g ./src/index.html ✗ sed -i '' s/version=\"[^ \"]+\"/whatever/g ./src/index.html ✗ sed -i '' s/version="[^ "]+"/whatever/g ./src/index.html ✗ sed -i '' s/version=\"[^\"]+\"/whatever/g ./src/index.html ✗ sed -i '' s/version=/whatever=/g ./src/index.html ✗ sed -i '' s/version=\"/whatever=\'/g ./src/index.html ✗ sed -i '' s/version=\"[^\"]/whatever=\"/g ./src/index.html
Hilfe? Es ist die Datei richtig finden. Wenn ich Versionen davon tue, die keine Regex enthalten (siehe dritte von unten), wird sie korrekt ersetzt, aber irgendwie scheint meine Regex-Syntax hier nicht zu funktionieren.
Oder kann jemand an eine einfachere/zuverlässigere Möglichkeit denken, dies zu tun?
Try 'sed -i '' "s/version = \" v [0-9] * \ [. 0-9] * \. [0-9] * \ "/ was auch immer =/g"./Src/index.html " –
@ WiktorStribiżew - Das hat funktioniert! Willst du es eine Antwort machen, damit ich es auswählen kann? – Sasha