ich den Eingang zu ersetzen,Bash: Suchen und Ersetzen mit Parametern Expansion nur
input_string: @include Kreis-Fortschritt (38px, 30px, # 4eb630)
und Ausgang,
Output_string : @include circle-progress (38px, 30px)
mit ${input_string//pattern/replacement_string}
wo Muster ist , #[A-Fa-f0-9]{3,6}
ich liefern.
Dieses Muster entspricht den Teil I ersetzt werden soll, wenn ich es in regex101.com testen, aber den Code
replace_pat=", \#[A-Fa-f0-9]{3,6}"
echo "${input_string//"$replace_pat"/}"
Ausgänge genau der gleiche Eingang. Ich möchte nichts anderes als sed verwenden. Ich weiß nicht, wo ich falsch liege.
Gelöst. Danke Gordon.
Die Lösung mit Glob-Mustern funktioniert einwandfrei, aber der Code unten druckt immer noch genau den gleichen Eingang, nämlich line
passend pattern
, wenn ich Zeilen Code aus einer Datei lesen.
pattern="@include circle-progress\(([0-9]{1,3}px,){2}#[A-Fa-f0-9]{3,6}\)" replace_glob=', #[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]?([A-Fa-f0-9]?([A-Fa-f0-9]?([A-Fa-f0-9])))' while IFS='' read -r line || [[ -n "$line" ]]; do if [[ $line =~ $pattern ]] then echo "${line//$replace_glob/}" fi done < "$1"