Estoy tratando de tomar el último espacio y lo que sigue en una línea usando grep.Cómo tomar el último carácter en una expresión regular con grep
Esto me agarra el primer espacio:
echo "toto tata titi" | grep -o " .*$"
En Java habría utilizado el operador no expansivo pero no parece funcionar:
echo "toto tata titi" | grep -o " .*?$"
devolverlo nada
El resultado esperado es titi
.
Su expresión regular hace lo que yo quería hacer, gracias. ¿Pero sabes por qué los míos no funcionan incluso con -E? – JPB
@ Jean-Philippe: Porque la expresión regular se aplica a la cadena del sujeto de izquierda a derecha, por lo que comienza en el primer espacio, se expande gradualmente hasta el final y, por lo tanto, tiene éxito. No es necesario probar otras posiciones. –
@Jean: la coincidencia '/. *? $ /' Primero encuentra el espacio y comienza a emparejar desde allí. Sigue haciendo coincidir hasta el final de la cadena y está hecho. La no avaricia solo entra en juego cuando el intérprete tiene que decidir si continúa buscando la unidad actual ('.') o en su lugar con la siguiente. No retrocede hasta que encuentra la solución más corta. – Tim