Exécuter sur tous les fichiers dans un répertoire, traitant chacune séparément, à l'aide de AWK

Je veux lancer un script AWK sur chaque fichier dans un répertoire, mais le AWK commande doit s'exécuter uniquement à l'intérieur du fichier - qui est, il recherche entre un définies RS et renvoie ce qu'il est censé le faire, mais j'en ai besoin pour arrêter lorsqu'il atteint la fin d'un fichier, et de recommencer au début du fichier suivant.

J'ai cette course qui fonctionne sur chaque fichier individuellement:

awk '!/value1|value2/&& NF {print FILENAME " - " RS,$1}' RS="value" file1 > result.txt

Mais la sortie n'est pas correct, disons, lors de l'application pour chaque fichier dans un répertoire à l'aide de

find . -type f | awk ... file1 > result.txt

Comment pourrais-je l'obtenir à regarder à chaque fichier individuellement, mais ajouter le résultat dans le même fichier? Je n'ai aucune idée malheureusement. Je suppose que c'est par l'ajout de chaque fichier dans une variable et ayant AWK regarde, mais je ne suis pas sûr de savoir comment faire.

Fichier fichier1:

interface Vlan3990
 ip address 172.17.226.23 255.255.255.254

Fichier fichier2:

version 12.2
ip tacacs source-interface Loopback99
ip vrf test
 description xx
interface Loopback99
 description Management Loopback
interface Loopback100
 shutdown

De sortie

find . -type f | xargs awk '!/description|shutdown/&& NF {print FILENAME " - " RS,$1}' RS="interface" | more
./file1 - interface Vlan3990
./file2 - interface version

Je ne suis pas sûr de l'endroit où la sortie "la version de l'interface' est à venir à partir de...

  • script shell pour l'appel awk sur chaque fichier séparément? ou COMMENCER/BEGINFILE/FIN/ENDFILE mis en œuvre en cas de besoin?
  • oui - de sorte qu'il ressemble à un fichier, exécute la commande, s'arrête, puis ouvre le fichier suivant dans le répertoire, exécute la commande, arrêts, etc... ne sais pas comment l'obtenir pour ce faire, comme il y a 300+ fichiers dans le répertoire
  • Pouvez-vous expliquer la phrase mais la sortie n'est pas correct? Quelles sont les différences entre ce que vous obtenez et ce que vous attendez?
  • dans chaque fichier, il y a une dernière occurrence de la RS, de sorte qu'il semble, et les retours entre la dernière occurrence dans le premier fichier et la première occurrence de la deuxième fichier...
  • Clarifier ce que vous essayez de faire avec venu de l'échantillon d'entrée et de sortie attendue comme vous semblez pour demander une solution à un problème qui n'existe pas.
  • ok. merci ed. un sec.
  • Est "sortie" au-dessus de la sortie que vous voulez ou de la sortie actuelle vous obtenez ce que vous ne voulez pas? Dans ce dernier cas, la sortie en voulez-vous?
  • La sortie de "la version de l'interface", par la manière, venant de vous le mettre RS="version" et puis l'impression RS suivie par $1 $1 est "version" sur la première ligne de fichier2 vous obtenez cette sortie.
  • ok... je m'attends à voir une sortie de toutes les lignes commençant par "interface" qui n'ont pas de lignes commençant par "arrêt" ou "description", à la suite jusqu'à la prochaine occurrence d'une ligne commençant par 'interface'. c'est le principe de cisco config - et je le veux pour imprimer toutes les interfaces qui ne sont pas fermées et n'ont pas de description.