Ich habe den folgenden Text ...awk Setvariable Linie nach if-Anweisung Spiel
BIOS Information
Manufacturer : Dell Inc.
Version : 2.5.2
Release Date : 01/28/2015
Firmware Information
Name : iDRAC7
Version : 2.21.21 (Build 12)
Firmware Information
Name : Lifecycle Controller 2
Version : 2.21.21.21
..., die in den folgenden awk-Anweisung geleitet wird ...
awk '{ if ($1" "$2 == "BIOS Information") var=$1} END { print var }'
Dieser Wille Ausgabe "BIOS" in diesem Fall. Ich möchte nach 'BIOS Information' suchen und dann das dritte Feld, zwei Zeilen nach unten setzen, in diesem Fall würde 'var' gleich '2.5.2' sein. Gibt es eine Möglichkeit, dies mit awk zu tun?
EDIT: Ich habe versucht, die folgenden:
awk ' BEGIN {
FS="[ \t]*:[ \t]*";
}
NF==1 {
sectname=$0;
}
NF==2 && $1 == "Version" && sectname="BIOS Information" {
bios_version=$2;
}
END {
print bios_version;
}'
Was mich '2.21.21.21' mit dem obigen Text gibt. Kann dies geändert werden, um mir die erste "Version" nach "BIOS Information" zu geben?
es versucht, die mir die Version für den falschen Abschnitt gibt. Ich habe gerade einen vollständigeren Abschnitt des Textes hinzugefügt, der im Prozess ist. Vielen Dank! – user1601716
Behoben. Hier fehlte das Gleichheitszeichen: 'sectname ==" BIOS Information "'. – gudok
Funktioniert gut und ich kann das weiter ausbauen, Danke! – user1601716