cómo obtener el primer número de variables
Tengo una variable:
STR="My horse weighs 3000 kg but the car weighs more"
STR="Maruska found 000011 mushrooms but only 001 was not with meat"
STR="Yesterday I almost won the lottery 0000020 CZK but in the end it was only 05 CZK"
Necesito obtener los números:
3000
11
20
Aquí hay una forma de hacerlo:
Prueba:
fuente
sed
al final? Parece que antes de que entre en sed ya tenemos el resultado que queremos.000011
para el cual debe eliminar los ceros iniciales. Pero podría simplificar haciendo coincidir[1-9][0-9]*
lo que eliminaría los ceros iniciales desde el principio:echo $STR | grep -o -E '[1-9][0-9]*'
Si su implementación de
grep
no tiene-o
o si no está usando Bash, puede hacer lo siguiente:fuente
fuente
He puesto sus cadenas en una matriz para que se pueda iterar fácilmente para esta demostración.
Esto utiliza la coincidencia de expresiones regulares incorporada de Bash.
Solo se requiere un patrón muy simple. Se recomienda utilizar una variable para mantener el patrón en lugar de incorporarlo directamente en la prueba de coincidencia. Es esencial para patrones más complejos.
Incluí los corchetes solo para resaltar visualmente los números.
Salida:
Para obtener los números sin los ceros a la izquierda, la forma más fácil es forzar una conversión de base 10.
Sustituyendo eso, la salida se parece a lo que solicitó:
fuente
Busque expresiones regulares y
man grep
.y para eliminar los ceros iniciales, trátelo como un número:
fuente