3 votes

Comment extraire un mot d'un fichier en utilisant sed ou grep

Je suis en train d'essayer d'extraire un morceau de texte d'un fichier pour l'utiliser comme entrée pour la commande suivante. Le mot commence toujours par "JID_" puis quelques chiffres/caractères aléatoires après cela.

Par exemple :

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

Je veux attribuer une variable $JID à cette chaîne de caractères. Comment puis-je l'extraire de la ligne ? sed ou grep de préférence, mais toute méthode est acceptable.

2voto

JPerkSter Points 285

Cela a fonctionné pour moi

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

001264193601

1voto

DellServerGeek Points 31

D'accord, j'ai juste bidouillé pendant quelques minutes et j'ai trouvé ceci :

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

Avec une sortie de ceci :

JID_001264194552

Je pense que cela fonctionnera.

0 votes

Je pense qu'il veut simplement afficher les caractères après JID_

1voto

jason saldo Points 5036

Cette commande :

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

affichera ceci :

001264193601

pour l'entrée donnée.

Si vous voulez conserver le "JID_" :

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

0 votes

Je veux savoir ce que fait le \1/p à la dernière ligne des deux commandes que vous avez mentionnées.

0 votes

@RegisteredUser : Le \1 met en avant la chaîne qui a été capturée par le premier (dans ce cas unique) \(\) avant le slash central (dans ce cas, il s'agit d'une séquence d'un ou plusieurs chiffres). Le p après le dernier slash permet d'imprimer le résultat puisque l'option -n désactive l'impression automatique. En les utilisant ensemble, cela empêche toute sortie des lignes qui ne correspondent pas à l'expression régulière entre le premier et le slash central.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X