Hier ist ein Ausschnitt aus dem INPUT:
...
####################
Bala Bela;XXXXXX12345;XXXXXX12345678;A
SERVER345Z3.DOMAIN.com0
SERVER346Z3.DOMAIN.com0
SERVER347Z3.DOMAIN.com0
SERVER348Z3.DOMAIN.com0
ssh-dss ...pubkeyhere...
####################
Ize Jova;XXXXXX12345;XXXXXX12345;A
SERVER342Z3.DOMAIN.com0
SERVER343Z3.DOMAIN.com0
SERVER345Z3.DOMAIN.com0
ssh-rsa ...pubkeyhere...
...
Und hier ist ein Ausschnitt aus dem OUTPUT, den ich brauche:
Bala Bela;XXXXXX12345;XXXXXX12345678;A
4
Ize Jova;XXXXXX12345;XXXXXX12345;A
3
Ich benötige also einen AUSGANG vom EINGANG, damit ich sehen kann, wie viele Zeilen, die mit "SERVER" beginnen, an einen bestimmten Benutzer gehen (Beispiel: "Bala Bela; XXXXXX12345; XXXXXX12345678; A"). Wie kann ich das in Bash machen?
bash
text-processing
gasko peter
quelle
quelle
Antworten:
Das gleiche gilt für Perl-Einzeiler
und Golf gespielt
quelle
Diese Version zählt alle Zeilen, die nicht mit dem regulären Ausdruck in der
grep
Zeile übereinstimmen .Ausgabe:
Wenn Sie nur Zeilen zählen möchten, die mit 'SERVER' beginnen, dann:
quelle
Ausgabe:
Wenn eine vorangestellte Zählung in Ordnung ist:
Ausgabe:
quelle
Eine
awk
Alternative:Alles in einer Zeile:
quelle
Wenn die Ausgabe bereits in jedem "Bucket" sortiert ist, können Sie uniq direkt anwenden, indem Sie nur die ersten N Zeichen überprüfen:
Hier ist N == 6, da SERVER aus 6 Zeichen vom Zeilenanfang besteht. Sie erhalten diese Ausgabe (die sich ein wenig von Ihrer erforderlichen Ausgabe unterscheidet):
quelle