2
#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"

ここで、このファイルから次の番号を抽出し、後で使用できるようにさまざまな変数に保存して、バージョン、ビルド、およびシリアルで使用できるようにします。

4.00, 656, and FGT50B3G07518374 

これらの数値は変更される可能性があります。この情報を抽出する方法を教えてください。私はsedを使用できることを知っていますが、この要件に対する適切な構文を理解できません。

4

2 に答える 2

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

小数点付きのすべての数値を取得します(4.00形式が同じであれば、これで取得できます)

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

build最初の行の後に続く数字を取得する必要があります

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

引用符で囲まれた単一行の文字列を取得する必要があります。これにより、ホスト名が得られるようです。ファイルの他の形式に引用符がある場合を除きます。

于 2013-07-25T19:30:44.010 に答える
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
于 2013-07-25T19:30:53.667 に答える