#config-version=FGT50B-4.00-FW-build656-130211:opmode=0:vdom=0:user=admin
#conf_file_ver=4902373584228557200
#buildno=0656
#global_vdom=1
config system global
set access-banner disable
set admin-concurrent enable
set admin-https-pki-required disable
set admin-lockout-duration 60
set gui-policy-interface-pairs-view enable
set gui-voip-profile disable
set hostname "FGT50B3G07518374"
现在我想从这个文件中提取以下数字并存储在不同的变量中供以后使用,让我们使用Version,Build和Serial。
4.00, 656, and FGT50B3G07518374
这些数字可以改变。任何人都可以告诉我如何提取这些信息。我知道我可以使用sed但无法弄清楚这个要求的正确语法。
答案 0 :(得分:2)
grep -o "[0-9]\.[0-9]\+"
将获得带有小数点的所有数字(如果您的格式保持不变,则应该为您提供4.00
)
grep -o "build[0-9]\+" | sed "s/[^0-9]\+//"
应该在第一行build
之后得到任何数字
grep -o "\".\+\"" | sed 's/"//g'
应该为您提供引号中包含的任何单行字符串,这似乎会为您提供主机名。除非文件的其他格式可能有引号。
答案 1 :(得分:2)
awk可以在单个命令中执行此操作:
arr=( $(awk -F '[ =-]+' '$1=="#config"{print $4} $1=="#buildno"{print $2+0}
$3=="hostname"{gsub(/"/, ""); print $4}' file) )
printf "%s\n" "${arr[@]}"
<强>输出:强>
4.00
656
FGT50B3G07518374