簡體   English   中英

從Linux中的文本文件中提取信息

[英]extract information from text file in linux

#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,但是無法弄清楚它是否適合此要求。

grep -o "[0-9]\.[0-9]\+"

將獲得所有帶小數點的數字(如果格式保持不變,則應為4.00

grep -o "build[0-9]\+" | sed "s/[^0-9]\+//"

在第一行中build后應該得到什么數字

grep -o "\".\+\"" | sed 's/"//g'

應該會為您提供用引號引起來的任何單行字符串,這似乎為您提供了主機名。 除非文件中可能有其他格式的引號。

awk可以在單個命令中執行此操作:

arr=( $(awk -F '[ =-]+' '$1=="#config"{print $4} $1=="#buildno"{print $2+0}
        $3=="hostname"{gsub(/"/, ""); print $4}' file) )

printf "%s\n" "${arr[@]}"

OUTPUT:

4.00
656
FGT50B3G07518374

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM