compter quand au moins une chaîne existe dans unix de données en utilisant awk / sed

J’ai des données comme ci-dessous dans l’éditeur vi avec des lignes vierges. Je veux rechercher “aaaa | bbbb | cccc” dans chaque bloc.

Si au moins l’un d’entre eux (“aaaa”, “bbbb”, “cccc”) est présent dans le bloc, je dois compter le bloc. Mon résultat devrait être le nombre de blocs contenant au moins l’un d’entre eux.

aaaa bbbb cccc aaaa bbbb cccc aaaa xxxx yyyy aaaa xxxx xxxx zzzz yyyy yyyy zzzz bbbb bbbb yyyy 

Dans l’exemple ci-dessus, la sortie est 6.

Comment puis-je atteindre cet objective?

awk à la rescousse!

 $ awk -v RS= '/aaaa|bbbb|cccc/{c++} END{print c}' filewithfixedformat 6 

La définition de RS= définira des blocs séparés par des lignes vides comme enregistrements et le script comptera les enregistrements où la condition est remplie.