Der einfachste grepCode, der funktioniert:
grep -xE '([^,]*,){10}[^,]*'
Erläuterung:
-xstellt 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 eoder 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.
sedhier) nur bis zu einer Übereinstimmung mehr, als gesucht wird, obwohl diese Frage dies tut. Sie sollten dies nicht geschlossen haben.