$ awk '{ print $1 }' file | sort | uniq -c
1 ??
1 A
1 D
1 M
Si pour une raison quelconque, vous voulez une solution awk seule:
awk '{ ++cnt[$1] } END { for (i in cnt) print cnt[i], i }' file
mais je pense que CBH inutilement comparé à l'utilisation des outils Unix intégrés qui font déjà la plupart du travail.
Si vous voulez juste compter une valeur particulière:
awk -v value='??' '$1 == value' file | wc -l
Si vous voulez compter un sous-ensemble de valeurs, vous pouvez utiliser une expression régulière:
$ awk -v pattern='A|D|(\\?\\?)' '$1 ~ pattern { print $1 }' file | sort | uniq -c
1 ??
1 A
1 D
Ici, vous avez besoin de envoyez un \
pour que les ?
s fuient dans l'expression régulière. Et parce que le \
est lui-même un caractère spécial dans la chaîne qui est passée à awk, vous devez d'abord y échapper (d'où le double backslash).
raisons pour vérifier votre titre avant de poster, # 1 – ArtOfCode
La bonne solution est d'utiliser le format de sortie lisible par machine de Subversion et analyser cela. Cependant, le XML est assez complexe, donc vous trouverez beaucoup de solutions existantes similaires à ce que vous avez essayé ici. Avez-vous google du tout? – tripleee