2 votes

Vérification de cohérence du fichier pour produire une réponse binaire

Quelle(s) commande(s) Unix puis-je utiliser pour déterminer l'existence ou non de plusieurs mots qui produiront une réponse binaire ?

Par exemple : je veux m'assurer qu'un fichier contient le mot "foo" 6 fois et le mot "bar" 8 fois. Je veux également m'assurer que le fichier ne contient ni "fizz" ni "buzz".

1voto

Oliver Points 125

Il peut y avoir des moyens plus élégants de le faire, mais cela fera l'affaire, pour un fichier appelé test:

if [ `grep -c bar test` == 8 ] && [ `grep -c foo test` == 6 ] && [ `grep -c fizz test` == 0 ] && [ `grep -c buzz test` == 0 ] ; then  echo "yes" ; else echo "no" ; fi

0 votes

Cela échouera lorsque les mots apparaissent plusieurs fois sur les mêmes lignes, car grep -c ne renvoie que le nombre de lignes correspondantes, pas le nombre de mots. echo "test test" | grep -c test renverra 1.

0 votes

@DanielAndersson Bon point Ocasta, pouvez-vous ajouter plus d'informations sur la structure des données à votre question ?

0 votes

@Paul, Je suis en train de créer un contrôle de cohérence pour un fichier texte dérivé. Il se peut qu'un même mot apparaisse plusieurs fois sur chaque ligne, mais si ma compréhension de la façon dont ce fichier texte particulier est construit est correcte, alors on peut raisonnablement supposer que le fichier est sain si chacun des mots est mentionné au moins une fois.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X