例如:
- RXOTG-1388 可容纳 3 个物体 RM4FD1,RM4FD2,RM4FD3
- RXOTG-1398 可容纳 3 个物体 VT08D1 VT08D2,VT08D3
- 等等。
根据这个文本文件,我想使用awk,每个 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