# findstr Problem



## Frosch2010 (14. September 2010)

Hi Leute,
ich habe ein Problem mit findstr. 
Und zwar würde ich gerne nach einer id Suche z.b. TEST[1-9][0-9]* 
Das heisst es könnte z.B. TEST11 vorkommen und er würde den String finden.
Das funktioniert auch soweit. Nun mein Problem:

Sollte der zu suchende String nicht am Zeilenanfang stehen muss vor dem TEST11 unbedingt ein Leerzeichen sein.

Wie überprüfe ich das?

Vielen Dank


----------



## deepthroat (15. September 2010)

Hi.

Das kannst du mit findstr nicht realisieren, da findstr keine Alternativen kennt.

Du könntest natürlich die Daten doppelt analysieren und deine ID einmal am Zeilenanfang und danach nochmal nicht am Zeilenanfang mit Leerzeichen suchen.

Gruß


----------



## Frosch2010 (15. September 2010)

```
findstr /c:" TEST11" test.txt && findstr /b "TEST11 test.txt
```
wäre meine Lösung gewesen aber wird doch ein wenig komplizierter als ich gedacht habe.
Ziel ist das auch mehrere Patterns inklusive regular Expressions gefunden werden.

Hier weiß ich leider nicht wie ich das Leerzeichen beachte, da ich das auch shcon als Trenner zwischen den Patterns verwende. Ob es am Zeilenanfang steht bekomm ich so raus:


```
findstr /I "^TEST-[1-9][0-9]* ^ANDERERTEST-[1-9][0-9]*" hello.txt
```
Das gibt mir aus wenn TEST oder ANDERERTEST am Zeilenanfang steht
nun würde ich gerne noch überprüfen ob 
" TEST-[1-9][0-9]" und " ANDERERTEST-[1-9][0-9]" vorkommt.

Viele Grüße


----------



## Frosch2010 (15. September 2010)

```
findstr /I "^TEST[1-9][0-9]* ^ANDERERTEST[1-9][0-9]*" test.txt && findstr /R /C:" TEST[1-9][0-9]" test.txt && findstr /R /C:" ANDERERTEST[1-9][0-9]" test.txt
```

Das wäre die hässliche Lösung.
Kann ich das noch sauberer machen ?
Weil es halt mehr als 2 Patterns werden sollen und ich halt den 2ten Teil für jedes weitere Pattern extra angeben müsste


----------



## deepthroat (15. September 2010)

Du könntest höchstens eine Schleife verwenden:

```
for /F "tokens=*" %l in (test.txt) do (
  echo.%l| findstr ...
  echo.%l| findstr ...
  echo.%l| findstr ...
)
```
Oder du nimmst ein alternatives Programm, wie z.B. grep.

Gruß


----------

