2015-04-23 1 views
0

J'ai besoin de lire un fichier texte et de rechercher une chaîne et de stocker la valeur en regard de la chaîne recherchée dans une variable. Je dois stocker chaque occurrence de valeur dans une variable.Rechercher la chaîne et la valeur de stockage à côté de la variable dans le script Batch

Donc, mon fichier texte sera:

bonjour

comment allez-vous

mon numéro est le suivant: 1

votre numéro:

Je suis bon

Je un fi ne

mon numéro est: 234

votre numéro:

donc je dois rechercher chaîne « mon numéro est » et stocker les 1 dans une variable et alors la valeur 234 dans la même variable virgule (,) variable séparée.

Note: la chaîne "mon numéro est" peut être répétitive plusieurs fois et je dois stocker toute sa valeur.

Mon but ultime sera de stocker chaque valeur séparée par des virgules dans la table temporaire.

S'il vous plaît fournir vos suggestions.

Mon code tentative:

for /f "tokens=4* delims= " %%a in ('findstr "my number is" "C:\test.txt"') do set "line=%%a" 
echo "%line% 
+0

Pourquoi _put sur hold_? À mon humble avis, la question du PO est assez clair. J'ai une réponse prête à poster ... – JosefZ

+0

Une suggestion au moins: 1. 'SETLOCAL enabledelayedexpansion'; 2. ligne "set" = "'; 3. 'pour ... findstr/IC:" mon numéro est "... do set" line =! Line!, %% a "'; 4. 'echo% line: ~ 1%' – JosefZ

+0

Merci beaucoup JosefZ. Votre seggestion fonctionne parfaitement pour le fichier d'entrée donné. Maintenant, j'ai une autre exigence, s'il vous plaît vérifier cela et fournir des suggestions. – HelloFriends

Répondre

1
line=$(fgrep "my number is" test.txt | sed "s/[^0-9]//g" | tr '\n' ',' | sed "s/,$//") 
  • line=$(...) ensembles de sortie ... à $line
  • fgrep renvoie toutes les lignes contenant my number is
  • premier sed supprime tous les caractères non-chiffres (modifiez regex en conséquence si vous attendez des nombres négatifs ou à virgule flottante)
  • tr rejoint toutes les lignes, les délimitant avec ,
  • secondes sed supprime la
  • virgule de fin
+0

Bonne réponse, mais je crois que mec veut quelque chose pour Windows, d'où le tag de fichier batch. – Barett

+0

Merci pour votre réponse. En fait je cherche la réponse dans le script de Batch. S'il vous plaît laissez-moi savoir comment réaliser cela dans le script Batch. Je vais utiliser ce script dans Windows 2008 R2. – HelloFriends