2013-07-25 4 views
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" 

Теперь я хочу извлечь следующие цифры из этого файла и сохранить в разных переменных для последующего использования, позволяет нам в версии, сборке и серийном.извлечь информацию из текстового файла в linux

эти цифры могут быть изменены. может кто-нибудь сказать мне, как я могу извлечь эту информацию. Я знаю, что могу использовать sed, но не могу определить его правильный синтаксис для этого требования.

+0

является 656 всегда будет такой же, как 'buildno'? –

+0

№. все номера могут меняться. в другом файле сборки сборки build0179 – user115079

+0

Я имел в виду, вы ищете 656 в первой строке или 656 в третьей строке? –

ответ

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 
2
grep -o "[0-9]\.[0-9]\+" 

получит все номера с десятичными точками (которые вы должны получить ваш 4.00, если ваш формат остается неизменным)

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

должен получить вам любой номер приходит после build в первой строке

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

должен содержать любые строковые строки, окруженные кавычками, которые, как представляется, дают вам имя вашего хоста. Если в других форматах файла могут быть кавычки.

+0

Извините Justin не знаю, почему, но ваш код не работает. Я использую команду + имя файла (пример: grep -o "\". \ + \ "" | Sed 's/"// g' config_file), и это дает мне странный вывод ... приносит целые данные файла на выходе. – user115079

+0

, вы должны указать либо имя файла 'grep' (' grep ... config_file | sed ... '), либо передать его в (' cat config_file | grep ... ') –

+0

build синтаксис работает нормально, но другие два это не имя хоста, дающее много данных (почти полный файл), первый также дает много других чисел. – user115079