たとえば、
- 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