grepパターン検索で空の文字列を一致させるには?

grepパターン検索で空の文字列を一致させるには?

ネットワーク上の複数の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名そしてブート変数=

関連情報