Expression régulière avec findstr (ms-dos)

Je suis en train d'utiliser ms-dos commande findstr pour trouver une chaîne de caractères et l'éliminer du fichier.

Au moment où je peux trouver une chaîne explicite mais je suis vraiment du mal avec les expressions régulières.
Le fichier ressemble à quelque chose comme ci-dessous:

PLs - TULIP Report  
Output_Format, PLS - TULIP REPORT  
NUMLINES,    110907
VARIABLE_TYPES,T1,T8,I,T9,T2,N,N,N  
[[data below]]

Le fichier est une exportation à partir d'un système et fâcheusement a cet en-tête dans il - donc, je tiens à le nettoyer avant de l'utiliser SQL Loader pour l'amener dans une base de données Oracle.

Il n'y a plus que juste un seul fichier et tous ont le même type d'en-tête, mais jamais de manière légèrement différente dans chaque fichier.
Même si je suis heureux de supprimer d'abord les 2 premières lignes à l'aide de valeurs codées en dur, par exemple:

findstr /v "PLs - TULIP Report" "c:\myfiles\file1.PRO"  > "c:\myfiles\file1.csv"</code><br>
findstr /v "Output_Format, PLS - TULIP REPORT" "c:\myfiles\file1.csv" > "c:\myfiles\file2.csv"

(note comment je le faire en 2 étapes - des suggestions pour faire ceci se produire en une seule étape, serait massivelly apprécié)

La troisième ligne est mnore compliqué pour moi, elle sera toujours dans ce format:

NUMLINES,    110907

sauf que le numéro à la fin sera différente pour chaque fichier. Alors, comment puis-je obtenir à trouver l'intégralité de cette ligne à l'aide d'une expression régulière? J'ai essayé:

findstr /v /b /r "\D+ \s+ \d+"

mais sans succès.

Pour info, les données [[data below]] ressemble

*,"00000161",456823,"017896532","FU",23.95,3.34,20.61

etc ..
Évidemment, je ne veux pas modifier la zone de données.

J'espère que le ci-dessus a un sens,

Grâce

  • + ne fonctionnera pas utiliser l'astérisque. À moins que j'ai mal, cela fonctionne (findstr /B "NUMLINES, [0-9]" dos.txt) . Aussi, je ne pense pas que votre char classes \D, \s, \d sont pris en charge soit.
  • Merci pour cela - je pense que je suis allé pour la mauvaise voie la plus compliquée! - juste testé sur l'un des fichiers et il fonctionne très bien. Sauriez-vous comment faire la dernière ligne de trop? c'est à dire codeVARIABLE_TYPES,T1,T8,j',T9,T2,N,N,N/code ... et le saint graal, c'est de faire toutes ces lignes en une seule fois! 🙂 ... Sinon, j'ai aussi été à expérimenter avec le PLUS de commande, puisqu'il sera toujours les 4 premières lignes du fichier texte qui doivent être zappé, j'ai pensé que ce serait un bon candidat, mais il est très lent et il a également accroché pour une raison quelconque.
  • Oui, vous pouvez l'utiliser (findstr /B VARIABLE_TYPES, dos.txt). Notez que ceci suppose que vous n'aurez pas VARIABLE_TYPES dans vos données. Et si vous êtes sûr que les quatre premières lignes sont ignorées oui, vous pouvez utiliser (plus de +4 dos.txt).
  • Êtes-vous vraiment à l'aide de ms-dos? Ou êtes-vous à l'aide de Windows (CMD.EXE) fichier batch?
InformationsquelleAutor leroyb | 2012-10-23