Il existe de nombreuses réponses à la première partie de la question, à savoir l'impression de lignes entre deux motifs. Par exemple:Imprimez des lignes entre deux motifs et dormez pendant une seconde puis répétez jusqu'à l'EOF
awk '/start/{flag=1} flag; /end/{flag=0}' file
Cette imprime les lignes entre les motifs « start » et « fin » qui se produit à plusieurs reprises dans le « fichier ». Supposons que le fichier contient:
start a b c d 4 5 3 7 8 end some garbage start 6 d 0 0 1 d g end other garbages start 6 5 ... end some other garbage
Les impressions de commande ci-dessus « awk » sur le fichier entier en éliminant les déchets .. ce qui est bien, mais ce que je veux est une pause entre chaque morceau. C'est imprimé
start a b c d 4 5 3 7 8 end
sommeil pour une seconde (sleep 1
peut être utilisé) puis imprimer le morceau suivant:
start 6 d 0 0 1 d g end
et ainsi de suite jusqu'à la fin du fichier. J'ai beaucoup cherché mais je n'ai pas trouvé la seconde partie "pause/attente" donc je crois que ce n'est pas une question en double.
Êtes-vous sûr que le script awk fait ce que vous dites qu'il est en train de faire? – JNevill
Pour clarifier, cela ne fonctionne pas pour moi étant donné vos données d'échantillon et je ne peux pas voir comment cela fonctionnerait sans une boucle for pour itérer les champs dans l'enregistrement. Si une boucle for est implémentée, alors on pourrait, dans le test de '/ END /' implémenter un 'system (" sleep 10 ")' avant que la boucle ne passe au champ suivant. Mais c'est un point discutable puisque le script ne semble pas faire ce qu'il est censé faire. – JNevill
@JNevill effectivement vous avez raison, il imprime l'ensemble du fichier. Mais de toute façon je ne suis pas intéressé par cette commande awk, ce n'était qu'un exemple. Ce que je veux je l'ai décrit dans la question. – quanta