Cómo tomar una palabra de un archivo usando sed o grep

Cómo tomar una palabra de un archivo usando sed o grep

Estoy intentando extraer un fragmento de texto de un archivo para usarlo como entrada para el siguiente comando. La palabra siempre comienza con "JID_" y luego algunos números/caracteres aleatorios.

Por ejemplo :

        SelectorSet
            Selector: InstanceID = JID_001264193601, __cimnamespace = root/dcim

Quiero asignar una variable $JID a esa cadena de caracteres. ¿Cómo lo saco de la línea? Preferiblemente sed o grep, pero cualquier método está bien.

Respuesta1

Esto funcionó para mí

(03:45 PM):(Jacob@houston)~$ egrep -o "JID_[0-9]+" bah | cut -d _ -f2

001264193601

Respuesta2

Ok, lo pirateé durante unos minutos y se me ocurrió esto:

grep JID job.txt | sed -e "s/.*InstanceID = //" -e "s/,.*//"

Con salida de esto:

JID_001264194552

Creo que eso funcionará.

Respuesta3

Este comando:

var=$(sed -n 's/.*InstanceID = JID_\([0-9]\+\),.*/\1/p')
echo $var

generará esto:

001264193601

para la entrada dada.

Si desea conservar el "JID_":

var=$(sed -n 's/.*InstanceID = \(JID_[0-9]\+\),.*/\1/p')

información relacionada