У меня есть файл csv, и я хочу искать строки, содержащие «ABC», «12» и «45». Но я не хочу проверять первые пять столбцов для «ABC». Так что я написал это регулярное выражение:Игнорирование первых пяти столбцов в grep regex
(.*?,)(.*?,)(.*?,)(.*?,)(.*?,).*,ABC,.*,12,.*,45,.*
Но когда я
grep '(.*?,)(.*?,)(.*?,)(.*?,)(.*?,).*,ABC,.*,12,.*,45,.*' in.csv| wc -l
Я получаю ноль строк.
Но если я не игнорировать первые пять столбцов и сделать
grep '.*,ABC,.*,12,.*,45,.*' in.csv| wc -l
Тогда я получаю 4962 строк.
Но в действительности они меньше строк в csv, которые удовлетворяют этому. Итак, что отсутствует в первом регулярном выражении.
Вход:
306702,00848719009996,NULL,B,ABC,199.00,189.05,311,XYZ,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,9SIA3G62HJ3818,12,45
Если не совпадают
306702,00848719009996,NULL,B,ABC,199.00,189.05,311,ABC,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,9SIA3G62HJ3818,12,45
должны соответствовать
попробовать 'Grep -P«^ ((* ?,). . * ?,) (. * ?,) (. * ?,) (. * ?,). * (? <=,) АВС (? =,). *, 12 (? =,). *, 45 ,. * 'in.csv | wc -l ' –
@AvinashRaj Еще нулевые строки – GitCoder
Опубликовать образец ввода .. –