Все ваши скобки не совпадают.Выражение 'if' должно быть заключено в квадратные скобки, т. Е.
if (X == 45) ...
if ((X == 45) || (Y == 23)) ...
у вас его нет, и у вас больше закрывающих скобок, чем открывающих скобок - так что баланс также отключен;если мы посчитаем скобки (приращение для открытия, уменьшение для закрытия), мы получим в итоге -3 вместо 0, поэтому закрываем на три скобки больше, чем у нас:
1 2 1 0 1 0 -1 0 -1 0 -1 -2 -3
awk -F, '{if(length($2) == 15 ) || length($2) == 16) && length($1) == 12 && length($3) ) == 15) print }'
Итак, попробуйтеэто вместо этого, который перебалансирует все:
awk -F, '{ if (((length($2) == 15 ) || length($2) == 16) && (length($1) == 12 && length($3) == 15)) print }'