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

관련 정보