GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo puedo obtener el último número de una cadena en bash?

Puede usar la expansión de parámetros con extglob. Primero, elimine el número del final, luego elimine lo que obtuvo del principio.

#!/bin/bash
shopt -s extglob
for str in str1s2 djfs1d2.3 fefwfw4rfe45 234ef8 ; do
    without_number=${str%%+([0-9])}
    echo ${str#$without_number}
done

Todo lo que necesitas es grep -Eo '[0-9]+$' :

[email protected]:~$ echo 234ef85 |grep -Eo '[0-9]+$'          ## --> 85
[email protected]:~$ echo 234ef856 |grep -Eo '[0-9]+$'         ## --> 856
[email protected]:~$ echo 234ef85d6 |grep -Eo '[0-9]+$'        ## --> 6
[email protected]:~$ echo 234ef85d.6 |grep -Eo '[0-9]+$'       ## --> 6
[email protected]:~$ echo 234ef85d.6. |grep -Eo '[0-9]+$'      ## --> no result
[email protected]:~$ echo 234ef85d.6.1 |grep -Eo '[0-9]+$'     ## --> 1
[email protected]:~$ echo 234ef85d.6.1222 |grep -Eo '[0-9]+$'  ## --> 1222

Linux
  1. Cómo obtener el estado de salida de un bucle en bash

  2. ¿Cómo puedo contar la cantidad de caracteres en una variable Bash?

  3. ¿Cómo obtengo el directorio absoluto de un archivo en bash?

  4. ¿Cómo puedo obtener información del contenedor de Docker Linux desde el propio contenedor?

  5. ¿Cómo obtener elementos de la lista en bash?

Cómo obtener la cantidad de procesadores/núcleos en Linux

¿Cómo puedo *solo* obtener la cantidad de bytes disponibles en un disco en bash?

¿Cómo puedo obtener mensajes de registro del servidor LAMP en Ubuntu 10.04?

¿Cómo puedo obtener la duración de un archivo de video desde la consola?

¿Cómo obtener máscara de red de bash?

¿Cómo obtengo mi dirección IP desde la línea de comandos?