lot de script pour imprimer précédent et suivant des lignes de recherche de chaîne de caractères dans un fichier texte
J'ai un script batch qui permet d'imprimer l'ensemble de la ligne de chaîne de recherche dans un fichier texte.
for %%i in (log.txt) do (
FINDSTR /G:pattern.txt %%i >> output.txt
)
Exemple:
pattern.txt contient la chaîne de recherche ERROR
et ci-dessous le texte d'exemple dans log.txt
2013-06-30 02:17:55,562 INFO Service started
2013-06-30 02:17:55,578 INFO Sending mail...
2013-06-30 02:17:55,578 DEBUG Element value: 1
2013-06-30 02:17:55,578 ERROR error occurred and message is ""
2013-06-30 02:17:55,578 DEBUG bit version: 8
2013-06-30 02:17:55,578 INFO Service stopped
Les commandes ci-dessus script affiche chaque ligne de texte à chaque fois qu'il trouve la chaîne ERROR
dans log.txt Ainsi, l'output.txt va regarder à avoir des lignes comme ci-dessous
2013-06-30 02:17:55,578 ERROR error occurred and message is ""
Comment puis-je imprimer uniquement précédent et suivant des lignes de chaîne de recherche comme ci-dessous:
2013-06-30 02:17:55,578 DEBUG Element value: 1
2013-06-30 02:17:55,578 DEBUG bit version: 8
Merci d'avance.
Vous devez vous connecter pour publier un commentaire.
rem Search for the lines for /F "tokens=1* delims=:" %%a in ('findstr /N "^" log.txt ^| findstr /B "%numbers%"') do ( if %%a == %before% >> output.txt echo %%b if %%a == %after% >> output.txt echo %%b )
Fonctionne très bien pour plusieurs chaînes de recherche comme "erreur". Mais n'imprime que la dernière occurrence. En temps réel scénario, il y aura plusieurs occurrences d'une chaîne de recherche. Est-il possible d'atteindre sans l'aide d'outil tiers?(
original de la dernière ligne) > output.txt
. J'ai déjà modifié le code ci-dessus, de cette façon...Il utilise un helper fichier batch appelé findrepl.batte - http://www.dostips.com/forum/viewtopic.php?f=3&t=4697
essayez ceci:
for
bouclefor /f "tokens=1*delims=:" in ('findstr /in "^" ATServer-webconsole.log') do (
%%a
:for /f "tokens=1*delims=:" %%a in ('findstr /in "^" log.txt') do (
ISSUE DETECTED
. output.txt n'est pas généré. Affiche aucun message d'erreur.grep for Windows
pour cela, Si vous avez besoin de ce genre de choses plus souvent.