Der einfachste grep
Code, der funktioniert:
grep -xE '([^,]*,){10}[^,]*'
Erläuterung:
-x
stellt sicher, dass das Muster mit der gesamten Linie übereinstimmt und nicht nur mit einem Teil davon. Dies ist wichtig, damit Sie keine Zeilen mit mehr als 10 Kommas abgleichen.
-E
bedeutet "erweiterter regulärer Ausdruck", wodurch weniger Rückschläge in Ihrem regulären Ausdruck entstehen.
Klammern werden zum Gruppieren verwendet, und das {10}
bedeutet, dass in einer Reihe des Musters in den Klammern genau zehn Übereinstimmungen vorhanden sein müssen.
[^,]
ist eine Zeichenklasse - [c-f]
würde beispielsweise mit jedem einzelnen Zeichen übereinstimmen, das a c
, a d
, an e
oder an ist f
, und [^A-Z]
würde mit jedem einzelnen Zeichen übereinstimmen, das KEIN Großbuchstabe ist. Entspricht also [^,]
jedem einzelnen Zeichen außer einem Komma.
Das *
Nach der Zeichenklasse bedeutet "null oder mehr davon".
Der Regex-Teil ([^,]*,)
bedeutet also "Beliebiges Zeichen außer einem Komma beliebig oft (einschließlich Null), gefolgt von einem Komma" und {10}
gibt 10 davon an. Dann [^,]*
, um den Rest der Nicht-Komma-Zeichen mit dem Ende der Zeile abzugleichen.
sed
hier) nur bis zu einer Übereinstimmung mehr, als gesucht wird, obwohl diese Frage dies tut. Sie sollten dies nicht geschlossen haben.