Ich versuche, die Anzahl der Zeilen nach einer problematischen Zeile in einer CSV-Datei zu zählen. Mir ist bewusst, dass ich den grep -a #
verwenden kann Syntax zur Ausgabe von # Zeilen, nachdem eine Übereinstimmung gefunden wurde. Mich interessiert nur die tatsächliche Anzahl der Zeilen. Mir ist klar, dass ich die Zahl auf MAX_INT setzen, in eine Datei leiten und weiter verarbeiten könnte.
Ich suche nach einem prägnanten Einzeiler, um mir einfach die Anzahl mitzuteilen.
Irgendwelche Vorschläge?
Akzeptierte Antwort:
{ grep -m1 match; grep -c ''; } <file
Das funktioniert mit GNU grep
und ein lseek()
fähig infile. Das erste grep
stoppt bei 1 -m
atch, und der zweite wird -c
Zähle jede Zeile, die in der Eingabe verbleibt.
Ohne GNU grep
:
{ sed '/match/q'; grep -c ''; } <file
Natürlich mit grep
Sie können außerdem alle anderen Optionen verwenden, und es ist überhaupt nicht erforderlich, bei einem Spiel anzuhalten.