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?


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'

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'

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.