ネットワーク上の複数のCiscoスイッチの起動変数を含むファイルセットがあります。空のブート変数を持つスイッチのみをフィルタリングし、次の再ロード時にホスト名を印刷する必要があります。
given this data
hostname1#show boot
---------------------------
Switch 1
---------------------------
Current Boot Variables:
BOOT variable = flash:cat9k_iosxe.bin;
Boot Variables on next reload:
BOOT variable =
Manual Boot = no
Enable Break = no
Boot Mode = DEVICE
iPXE Timeout = 0
hostname2#show boot
---------------------------
Switch 1
---------------------------
Current Boot Variables:
BOOT variable = flash:cat9k_iosxe.bin;
Boot Variables on next reload:
BOOT variable = flash:cat9k_iosxe.bin;
Manual Boot = no
Enable Break = no
Boot Mode = DEVICE
iPXE Timeout = 0
desired result
hostname1
BOOT variable =
ありがとうございます!
答え1
次のようなことができます
awk -F'#' '
$2 == "show boot" {hostname = $1}
/BOOT variable =[ \t]*$/ {print hostname; print}
' file
答え2
awk '{a[++i]=$0}/BOOT variable =.$/{for(x=NR-10;x<=NR;x++)print a[x]}' filename|awk '/^hostname/||/BOOT variable =.$/{print $0}'| sed "s/#.*//g"
結果:
hostname1
BOOT variable =
答え3
grepとパイプを使用してください。
grep -B8 -E '= $' file |grep -E 'hostname|= $'
最初のgrepは、「=」記号の後に何もない行と一致する前の8行を抽出し、ホスト名を含む行を抽出します。 2番目のgrepはラインをフィルタリングします。CPU名そしてブート変数=