Копировать последний файл с одного сервера на другой в определенное время

Если вы хотите найти количество вхождений поля с разделителями ,, которое начинается с 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)

0
06.06.2020, 23:20
0 ответов

Теги

Похожие вопросы