내 네트워크에 있는 여러 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줄을 추출하여 호스트 이름이 포함된 줄을 추출합니다. 두 번째 grep은 라인을 필터링합니다.CPU 이름그리고부팅 변수 =