Linux: cómo capturar el / los número / s de la cadena

0

Utilizo la siguiente sintaxis para capturar solo el número del nombre de host de la máquina

echo machineLinux05 | sed s'/\./ /g' | awk '{print $1}' | sed 's/[^0-9]//g'

05

Pero de esta manera no es tan elegante. ¿Hay otra alternativa corta para capturar el número de la cadena?

enodmilvado
fuente
1
¿Para qué sirve sed s'/\./ /g' | awk '{print $1}'? En su ejemplo, ninguno de estos comandos hace nada.
John1024
el propósito es en caso de que el nombre de host tenga también el nombre de dominio como machineLinux05.FG.com
enodmilvado
2
tr -cd '[0-9]' <<< "machineLinux05"
Cyrus
1
echo machineLinux05.FG,com | grep -o '[0-9]\+'También funciona.
Paulo

Respuestas:

1

Podrías deshacerte de la primera sedy awkno tienen sentido:

$ echo machineLinux05 | sed 's/[^0-9]//g'
Mureinik
fuente
en caso de que también tenemos el dominio como machineLinux05.FG, com, entonces se puede por favor, actualice la respuesta
enodmilvado
1
@enodmilvado Esto todavía imprime 05 incluso con un nombre de máquina totalmente calificado
Mureinik
0

Pruebe el siguiente one-liner:

echo machineLinux05.FG.com | perl -pe 's/\..*$//;s/[^0-9\n]+//g'
AnFi
fuente
en caso de que también tenemos el dominio como machineLinux05.FG, com, entonces se puede por favor, actualice la respuesta
enodmilvado
s/\..*$//elimina el primer punto y todos los caracteres posteriores.
AnFi