So greifen Sie mit sed oder grep auf ein Wort aus einer Datei zu

So greifen Sie mit sed oder grep auf ein Wort aus einer Datei zu

Ich versuche, einen Textabschnitt aus einer Datei zu ziehen, um ihn als Eingabe für den nächsten Befehl zu verwenden. Das Wort beginnt immer mit „JID_“ und danach folgen einige zufällige Zahlen/Zeichen.

Zum Beispiel :

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

Ich möchte dieser Zeichenfolge die Variable $JID zuweisen. Wie ziehe ich sie aus der Zeile? Am besten sed oder grep, aber jede Methode ist in Ordnung.

Antwort1

Das hat bei mir funktioniert

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

001264193601

Antwort2

Ok, ich habe ein paar Minuten daran herumgebastelt und bin auf Folgendes gestoßen:

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

Mit der Ausgabe davon:

JID_001264194552

Ich denke, das wird funktionieren.

Antwort3

Dieser Befehl:

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

gibt Folgendes aus:

001264193601

für die gegebene Eingabe.

Wenn Sie die „JID_“ behalten möchten:

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

verwandte Informationen