Mam następujący tekst ...awk ustawić zmienną do linii po if mecz
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
... który jest wyprowadzony na następującym stwierdzeniem awk ...
awk '{ if ($1" "$2 == "BIOS Information") var=$1} END { print var }'
Ta wola wyjście "BIOS" w tym przypadku. Chcę wyszukać "Informacje o systemie BIOS", a następnie ustawić trzecie pole, dwie linie w dół, więc w tym przypadku "var" będzie równy "2.5.2". Czy jest jakiś sposób, aby to zrobić w awk?
EDIT: Próbowałem następujące:
awk ' BEGIN {
FS="[ \t]*:[ \t]*";
}
NF==1 {
sectname=$0;
}
NF==2 && $1 == "Version" && sectname="BIOS Information" {
bios_version=$2;
}
END {
print bios_version;
}'
co daje mi '2.21.21.21' z powyższego tekstu. Czy można to zmienić, aby dać mi pierwszą "Wersję" po "Informacje o BIOSie"?
Próbowaliśmy go, który daje mi Wersja dla złym dziale. Właśnie dodałem bardziej kompletny fragment tekstu, który im przetwarzanie. Dzięki! – user1601716
Naprawiono. Brak tu znaku równości: 'sectname ==" Informacje o systemie BIOS "'. – gudok
Działa świetnie i mogę to rozwinąć, dzięki! – user1601716