Çalışacak en basit grepkod:
grep -xE '([^,]*,){10}[^,]*'
Açıklama:
-xkalıbın bir parçası olmaktan ziyade tüm çizgiyle eşleşmesi gerekir . Bu önemlidir, bu nedenle 10'dan fazla virgül içeren satırlarla eşleşmezsiniz.
-E "genişletilmiş normal ifade" anlamına gelir, bu da normal ifadenizde daha az ters eğik çizgi oluşmasını sağlar.
Parantezler gruplama için kullanılır ve daha {10}sonra parantezler içinde desenin bir satırında tam olarak on eşleşme olması gerektiği anlamına gelir.
[^,]bir karakter sınıfıdır; örneğin, [c-f]a c, a d, a eveya an folan [^A-Z]herhangi bir tek karakterle eşleşir ve büyük harf OLMAYAN tek bir karakterle eşleşir. Yani [^,]virgül hariç herhangi bir karakterle eşleşir.
*Karakter sınıfı araçlarının sonra "sıfır veya bunların daha fazlası."
Yani normal ifade kısmı ([^,]*,)"virgül hariç herhangi bir karakter (sıfır kez dahil) ve ardından virgül gelir" anlamına gelir ve bunların {10}10'unu belirtir. Ardından [^,]*, virgül olmayan karakterlerin geri kalanını satırın sonuna eşleştirmek için.
sedburada olduğu gibi ) sadece arandığından daha fazla eşleşmeyi gerektirmez, ancak bu soru. Bunu kapatmamalıydın.