Voici un extrait de l'ENTRÉE:
...
####################
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...
...
Et voici un extrait de la sortie dont j'ai besoin:
Bala Bela;XXXXXX12345;XXXXXX12345678;A
4
Ize Jova;XXXXXX12345;XXXXXX12345;A
3
J'ai donc besoin d'une SORTIE de l'ENTRÉE, pour que je puisse voir combien de lignes commençant par "SERVEUR" vont à l'utilisateur donné (ex.: "Bala Bela; XXXXXX12345; XXXXXX12345678; A"). Comment puis-je faire cela en bash?
bash
text-processing
gasko peter
la source
la source
Réponses:
La même chose en perl one-liner
et joué au golf
la source
Cette version compte toutes les lignes qui ne correspondent pas à l'expression rationnelle de la
grep
ligne.Production:
Si vous voulez seulement compter les lignes commençant par 'SERVER', alors:
la source
Production:
Si un décompte préfixé est correct:
Production:
la source
Une
awk
alternative:Tout sur une seule ligne:
la source
Donc, si la sortie est déjà triée dans chaque "bucket", vous pouvez directement appliquer uniq en vérifiant uniquement les N premiers caractères:
Voici N == 6 car SERVER se compose de 6 caractères depuis le début de la ligne. Vous vous retrouverez avec cette sortie (qui est un peu différente de votre sortie requise):
la source