예를 들어:
- RXOTG-1388은 RM4FD1, RM4FD2, RM4FD3 3개 개체를 보유할 수 있습니다.
- RXOTG-1398은 VT08D1 VT08D2, VT08D3 3개 개체를 보유할 수 있습니다.
- 등.
내가 사용하고 싶은 이 텍스트 파일을 기반으로앗, 각 RXOTG가 보유하는 객체 수.
RXOTG-1388 RM4FD1 0
RM4FD2 0
RM4FD3 0
END
RXOTG-1398 VT08D1 0
VT08D2 0
VT08D3 0
END
RXOTG-1400 VT08S1 0
VT08S2 0
VT08S3 0
END
답변1
awk '
/^RXOTG/{
if(count)
print count
printf "%s\t", $1
count = 0
}
/.{6,}/{
count++
}
END{
print count
}'
답변2
awk '/^RXOTG/{x=$1; y=0}/^RXOTG/,/^$/{y++}/^END/{print x": "y-1}' in
/^RXOTG/{x=$1; y=0}
: 현재 레코드가 다음으로 시작하는 경우RXOTG
첫 번째 필드의 값을x
합계에 할당합니다.0
y
/^RXOTG/,/^$/{y++}
: 현재 레코드가 다음으로 시작하는 레코드 와 빈 레코드RXOTG
사이의 범위에 있으면 증가합니다y
./^END/{print x": "y-1}
: 현재 레코드가 다음으로 시작하면END
값을 인쇄한 다음 감소된 값을 인쇄합니다.x
:
y
1
% cat in
RXOTG-1388 RM4FD1 0
RM4FD2 0
RM4FD3 0
END
RXOTG-1398 VT08D1 0
VT08D2 0
VT08D3 0
END
RXOTG-1400 VT08S1 0
VT08S2 0
VT08S3 0
END
% awk '/^RXOTG/{x=$1; y=0}/^RXOTG/,/^$/{y++}/^END/{print x": "y-1}' in
RXOTG-1388: 3
RXOTG-1398: 3
RXOTG-1400: 3