2013-08-02 12 views
8

Chcę wyszukać jeden ciąg, np. "main" w moim projekcie na Windows OS rekurencyjnie. Przeszukałem to i znajdowałem rozwiązanie Windows recursive grep command-lineWyszukiwanie rekursywnie jeden ciąg w systemie Windows OS

Zastosowałem to samo z dwoma różnymi podejściami, a wynik nie jest taki, jak oczekiwano.

np. moje podejście

findstr /S "main" *.cpp 

ale gdy wybiorę

findstr /S "int main" *.cpp 

nie otrzymuję tylko moją główną funkcję. Jaka jest różnica między tymi dwoma podejściami? czy źle jest dostarczać ciągi w przestrzeni?

+2

Dlaczego jest to oznaczane jako 'C++'? – P0W

+1

@ P0W .. Właściwie używam plików C++ w moim projekcie. Jeśli nie jest warta tagu, mogę go usunąć. – someone

+0

@Krishna i jego już usunięte! – P0W

Odpowiedz

14

Dzieje się tak dlatego, ponieważ findstr przyjmuje zestaw ciągów znaków do wyszukiwania. Aby właściwie dopasować ciąg int main trzeba użyć opcji /C:

findstr /s /C:"int main" *.cpp 

natomiast Twój wariant daje każdą linię z obu int lub main.

+0

@Joey ... Dzięki ... Otrzymałem oczekiwany wynik ... – someone

1

Trochę późno na imprezę Tutaj ale jeśli używasz

findstr /S "int.main" *.cpp 

będzie traktować kropkę jako dzika karta, który pasuje do miejsca, i tak długo, jak nie przeszkadza niektóre zbędne zapałki (które w tym przypadku są mało prawdopodobne) będzie ci dobrze działać.

Używam tego, nie wiedząc o opcji/C: przed przeczytaniem powyższych odpowiedzi.

Powiązane problemy