środa,
FINDSTR i wyrażenia regularne
Polecenie findstr
w systemie Windows obsługuje ograniczony zestaw wyrażeń regularnych, co oznacza, że jego możliwości nie są tak rozbudowane jak w przypadku narzędzi typu grep w systemach Unix/Linux czy nawet zaawansowanych funkcji dostępnych w językach programowania wspierających pełne wyrażenia regularne. Mimo to findstr
może być użyteczne do wykonywania prostych zadań wyszukiwania i filtrowania tekstu.
Obsługiwane wyrażenia regularne
Znaki specjalne
^
: Oznacza początek linii. Użyj tego na początku wzorca, aby znaleźć tekst pasujący na początku linii.$
: Oznacza koniec linii. Użyj tego na końcu wzorca, aby znaleźć tekst pasujący na końcu linii..
: Pasuje do dowolnego pojedynczego znaku, oprócz znaku nowej linii.
Sekwencje znaków
[xyz]
: Pasuje do dowolnego pojedynczego znaku zawartego w nawiasach. Na przykład,[abc]
pasuje do „a”, „b” lub „c”.[^xyz]
: Pasuje do dowolnego pojedynczego znaku niezawartego w nawiasach. Na przykład,[^abc]
pasuje do dowolnego znaku, który nie jest „a”, „b” ani „c”.
Zaawansowane opcje
- /I: Ignoruje wielkość liter przy porównywaniu tekstu.
- /V: Wyświetla tylko te linie, które nie zawierają określonego wzorca.
- /C: Umożliwia wyszukiwanie fraz zawierających spacje (traktuje ciąg znaków jako pojedynczy wzorzec do wyszukania).
Uwagi
findstr
nie obsługuje wielu funkcji dostępnych w pełnych implementacjach wyrażeń regularnych, takich jak leniwe kwantyfikatory, grupy przechwytujące, wyrażenia zagnieżdżone, asercje, i inne zaawansowane funkcje.- Nie można używać
|
do oznaczenia alternatywy (OR) bezpośrednio w wyrażeniu, choć można osiągnąć podobny efekt, używając osobnych poleceniafindstr
lub opcji/c
. - Wyrażenia regularne w
findstr
są ograniczone do prostych dopasowań i nie oferują pełnej elastyczności, którą można znaleźć w narzędziach specjalnie przeznaczonych do pracy z wyrażeniami regularnymi.
Przykłady
Wyszukiwanie linii, które zaczynają się od „start”
findstr "^start" plik.txt
Wyszukiwanie linii, które kończą się na „koniec”
findstr "koniec$" plik.txt
Wyszukiwanie linii zawierających dokładnie trzy cyfry z rzędu
findstr "[0-9][0-9][0-9]" plik.txt
Wyszukiwanie linii zawierających „error” lub „warning”
Możesz użyć kilku polecenia findstr z opcją /c dla każdego wzorca, aby wyszukać linie zawierające „error” lub „warning”:
findstr /R /c:"error" /c:"warning" plik.txt
W tym przypadku /c:
pozwala określić literały, które mają być wyszukane. Użycie /R
jest opcjonalne, ponieważ nie używamy tutaj żadnych specjalnych symboli wyrażeń regularnych.
Znalezienie linii niezawierających określonych słów
Aby znaleźć linie, które nie zawierają słowa „passed”, można użyć przełącznika /V
:
findstr /V "passed" plik.txt
Przełącznik /V
odwraca wyszukiwanie, więc polecenie zwraca wszystkie linie, które nie pasują do wzorca.
Wyszukiwanie linii zaczynających się dowolną literą
Aby znaleźć linie, które zaczynają się od dowolnej litery, użyj następującego wyrażenia:
findstr /R "^[a-zA-Z]" plik.txt
Tutaj ^
oznacza początek linii, a [a-zA-Z]
oznacza dowolną literę z zakresu A-Z (zarówno małe, jak i duże litery).
Szukanie linii zawierających cyfry
Aby znaleźć linie zawierające co najmniej jedną cyfrę, można użyć:
findstr /R "[0-9]" plik.txt
W tym przypadku [0-9]
pasuje do dowolnej cyfry od 0 do 9.
Wyszukiwanie linii kończących się konkretnym wyrazem, np. „success”
Możesz użyć poniższego polecenia, aby znaleźć linie kończące się słowem „success”:
findstr /R "success$" plik.txt
Symbol $
oznacza koniec linii, więc wzorzec pasuje do linii kończących się na „success”.