如果语句匹配,awk将变量设置为行
发布时间:2020-12-14 01:12:47 所属栏目:Linux 来源:网络整理
导读:我有以下文字…… BIOS InformationManufacturer : Dell Inc.Version : 2.5.2Release Date : 01/28/2015Firmware InformationName : iDRAC7Version : 2.21.21 (Build 12)Firmware InformationName : Lifecycle Controller 2Version : 2.21.21.21 …通过管道
我有以下文字……
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 …通过管道输入以下awk声明…… awk '{ if ($1" "$2 == "BIOS Information") var=$1} END { print var }' 在这种情况下,这将输出’BIOS’. 编辑: awk ' BEGIN { FS="[ t]*:[ t]*"; } NF==1 { sectname=$0; } NF==2 && $1 == "Version" && sectname="BIOS Information" { bios_version=$2; } END { print bios_version; }' 这给了我’2.21.21.21’上面的文字.这可以修改为给我“BIOS信息”之后的第一个“版本”吗? 解决方法
下面的脚本可能是一种矫枉过正,但如果你有多个部分名称和/或字段顺序被更改,它会很强大.
BEGIN { FS="[ t]*:[ t]*"; } NF==1 { sectname=$0; } NF==2 && $1 == "Version" && sectname=="BIOS Information" { bios_version=$2; } END { print bios_version; } 首先,我们设置输入字段分隔符,以便单词不会分成不同的字段.接下来,我们检查当前行是段名还是键值对.如果是节名称,请将sectname设置为节名称.如果它是一个键值对,当前节名称是“BIOS Information”,键是“Version”,那么我们设置bios_version. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |