Если вы хотите найти количество вхождений поля с разделителями ,
, которое начинается с TY
и за которым следует любое количество десятичных цифр, вы можете сделать:
<file perl -lne '$n += () = /(?<![^,])TY\d+(?![^,])/g; END{print 0+$n}'
Который на входе вида:
TY1,TY2,TY,TYFOO
TY213,X-TY2,TY4
Вернет 4
(TY1
, TY2
, TY213
,TY4
).
(?<!...)
и (?!...)
— операторы отрицательного взгляда вперед и назад, соответственно. Итак, здесь мы ищем TY
, за которым следует одна или несколько(+
)цифр (\d
), при условии, что перед ними нет ни предшествующих, ни последующих символов, кроме ,
.
Другой способ сделать это — преобразовать ,
в новые строки и подсчитать количество результирующих строк, начинающихся с TY
, за которыми следует одна или несколько цифр:
<file tr, '\n' | LC_ALL=C grep -xEc 'TY[[:digit:]]+'
(в моей системе это примерно в 10 раз быстрее решения perl
)