Простейший код grep
, который будет работать:
grep -xE '([^,]*,){10}[^,]*'
Объяснение:
-x
гарантирует, что шаблон должен соответствовать вся строка , а не ее часть. Это важно, чтобы вы не сопоставляли строки с более чем 10 запятыми.
-E
означает «расширенное регулярное выражение», что позволяет избежать обратного слэша в вашем регулярном выражении.
Круглые скобки используются для группировки, а {10}
после этого означает, что должно быть ровно десять совпадений в строке шаблона в скобках.
[^,]
- это класс символов. Например, [cf]
будет соответствовать любому одиночному символу, который a c
, a d
, an e
или f
, и [^ AZ]
будут соответствовать любому одиночный символ, НЕ являющийся прописной буквой. Итак, [^,]
соответствует любому одиночному символу, кроме запятой.
*
после класса символов означает «ноль или более из них».
Таким образом, часть регулярного выражения ([^,] *,)
означает «Любой символ, кроме запятая любое количество раз (включая ноль), за которой следует запятая ", а {10}
указывает 10 из них. Затем [^,] *
, чтобы сопоставить остальные символы, отличные от запятой, до конца строки.