Ich habe ein Bash-Skript, das ich versuche zu lernen. Ich habe eine SQL-Datei, die in sich hat:Erhalten Wert von Zeichenfolge basierend auf RegEx
create user myuser with password 'mypassword';
Ich möchte sed verwenden und den Wert des Passworts in einer Bash-Variablen und der pasword in anderen bash Variablen. Das Skript, von dem ich lerne, hat:
USERNAME := $(shell sed -n \
"s/^create user \(\S\+\) with password '\(\S\+\)';$$/\1/p" \
createdb.sql)
PASSWORD := $(shell sed -n \
"s/^create user \(\S\+\) with password '\(\S\+\)';$$/\2/p" \
createdb.sql)
Egal was ich versuchte, die Regex würde nicht zusammenpassen. Teil meines Problems ist, dass ich die Grundlagen von sed nicht verstehe. Wie gehe ich vor, um den Wert von Teilen der Zeichenfolge zu erhalten?
$ str in diesem Fall würde die Datei sein? –
hm ... mit externen 'grep' und nach bash builtin regex, anstatt einer externen sed + lesen? – jm666
Sie könnten, aber ich finde das ein wenig einfacher. Es verwendet im Wesentlichen ein Trennzeichen mit mehreren Zeichen "with password", um die beiden Werte zu trennen, anstatt zu versuchen, ein sicheres Ein-Zeichen-Trennzeichen zu erzeugen, das in 'IFS' verwendet werden kann, um die Ausgabe von' sed' lesen zu lassen. – chepner