expresiones regulares en expresión bash
Tengo 2 preguntas sobre expresiones regulares en la expresión de bash.
Modo 1.non-greedy
local temp_input='"a1b", "d" , "45"'
if [[ $temp_input =~ \".*?\" ]]
then
echo ${BASH_REMATCH[0]}
fi
El resultado es
"a1b", "d" , "45"
En java
String str = "\"a1b\", \"d\" , \"45\"";
Matcher m = Pattern.compile("\".*?\"").matcher(str);
while (m.find()) {
System.out.println(m.group());
}
Puedo obtener el resultado a continuación.
"a1b"
"d"
"45"
Pero, ¿cómo puedo usar el modo no codicioso en bash?
Puedo entender por qué el \ "[^ \"]\" trabajos.
Pero no entiendo por qué el \ ".?\" No funcionan.
Partidos de 2.global
local temp_input='abcba'
if [[ $temp_input =~ b ]]
then
#I wanna echo 2 b here.
#How can I set the global flag?
fi
¿Cómo puedo conseguir todos los partidos?
ps: solo quiero usar expresiones regulares
Para la segunda pregunta, perdon por lo confuso.
Quiero hacer eco de "b" y "b", no contar "b".
¡Ayuda!