Předmluva
mnoho informací v této odpovědi bylo shromážděno na základě experimentů spuštěných na stroji Vista. Pokud není výslovně uvedeno jinak, nepotvrdil jsem, zda se informace vztahují na jiné verze systému Windows.
FINDSTR výstup
dokumentace nikdy neobtěžuje vysvětlit výstup FINDSTR. To zmiňuje skutečnost, že odpovídající linky jsou vytištěny, ale nic víc.,
formát odpovídající řádek výstup je následující:
názvem:lineNumber:lineOffset:text
, kde
fileName: = jméno souboru obsahující odpovídající řádek. Název souboru není vytištěn v případě, že požadavek byl explicitně pro jeden soubor, nebo je-li vyhledávání piped vstup nebo přesměrován vstup. Při tisku bude název souboru vždy obsahovat všechny poskytnuté informace o cestě. Další informace o cestě budou přidány, pokud se použije možnost /S
. Tištěná cesta je vždy relativní k zadané cestě nebo vzhledem k aktuálnímu adresáři, pokud není k dispozici.,
Všimněte si – předpona souboru se lze vyhnout při vyhledávání více souborů pomocí nestandardních (a špatně zdokumentované) zástupné znaky <
>
. Přesná pravidla pro fungování těchto zástupných znaků naleznete zde. Nakonec se můžete podívat na tento příklad toho, jak nestandardní zástupné znaky pracují s FINDSTR.
lineNumber: = číslo řádku odpovídající čáry reprezentované jako desetinná hodnota s 1 představující 1. řádek vstupu. Vytiskněte pouze tehdy, pokud je zadána volba /N
.,
lineOffset: = desetinný byte offset začátku odpovídajícího řádku, přičemž 0 představuje 1. znak 1. řádku. Vytiskněte pouze tehdy, pokud je zadána volba /O
. Toto není posun zápasu v řadě. Jedná se o počet bajtů od začátku souboru až po začátek řádku.
text = binární reprezentace odpovídající linky, včetně všech <CR> a/nebo <LF>., Z binárního výstupu není nic vynecháno, takže tento příklad, který odpovídá všem řádkům, vytvoří přesnou binární kopii původního souboru.
FINDSTR "^" FILE >FILE_COPY
volba /a nastaví barvu názvu souboru:, lineNumber: a lineOffset: pouze výstup. Text odpovídajícího řádku je vždy zobrazen s aktuální barvou konzoly. Volba /a má efekt pouze tehdy, když je výstup zobrazen přímo na konzoli. Volba /a nemá žádný vliv, pokud je výstup přesměrován do souboru nebo piped., Viz 2018-08-18 upravit v Aacini je odpověď pro popis buggy chování, když výstup je přesměrován na CON.
Většina kontrolních znaků a mnoho rozšířené ASCII znaky se zobrazí jako tečky na XP
FINDSTR na XP zobrazuje většinou netisknutelné řídicí znaky z odpovídajících řádků jako tečky (období) na obrazovce. Následující kontrolní znaky jsou výjimky; zobrazují se jako samy o sobě: 0x09 Tab, 0x0a LineFeed, 0x0b Vertical Tab, 0x0c form Feed, 0x0d carriage Return.
XP FINDSTR také převádí řadu rozšířených znaků ASCII na tečky., Rozšířené znaky ASCII, které se zobrazují jako tečky na XP, jsou stejné jako ty, které jsou transformovány, když jsou dodávány na příkazovém řádku. Viz část „znakové limity parametrů příkazového řádku-rozšířená transformace ASCII“, později v tomto příspěvku
Ovládací znaky a rozšířené ASCII nejsou převedeny na tečky na XP, pokud je výstup veden, přesměrován do souboru nebo v klauzuli a pro in ().
Vista a Windows 7 vždy zobrazují všechny znaky jako sebe, nikdy jako tečky.,
návratové kódy(ERRORLEVEL)
- 0 (success)
- shoda byla nalezena alespoň v jednom řádku alespoň jednoho souboru.
- 1 (selhání)
- žádná shoda nebyla nalezena v žádném řádku libovolného souboru.,iv id=“b01f5d4aef“>
/D:
nebo/G:
- Soubor určený pomocí
/F:file
nebo/G:file
nenalezeno
- žádná shoda nebyla nalezena v žádném řádku libovolného souboru.,iv id=“b01f5d4aef“>
- 255 (chyba)
- Příliš mnoho regulární výraz, znak třídy podmínky
viz Regex třída znaků termín limit a CHYBA v části 2 odpověď
- Příliš mnoho regulární výraz, znak třídy podmínky
Zdroj dat pro vyhledávání (Aktualizováno na základě testů s Windows 7)
Findstr můžete vyhledávat data pouze z jednoho z následujících zdrojů:
-
názvy souborů uvedeny jako argumenty a/nebo pomocí
/F:file
možnost., -
stdin prostřednictvím přesměrování
findstr "searchString" <file
-
datový proud z potrubí
type file | findstr "searchString"
Argumenty/možnosti mají přednost před přesměrování, které má přednost před odvedený data.
argumenty názvu souboru a /F:file
lze kombinovat. Lze použít více argumentů názvu souboru. Pokud je zadáno více možností /F:file
, použije se pouze poslední. Divoké karty jsou povoleny v argumentech názvu souboru, ale ne v souboru, na který odkazuje /F:file
.,
Zdroj vyhledávací řetězce (Aktualizováno na základě testů s Windows 7)/G:file
/C:string
možnosti mohou být kombinovány. Více/C:string
možnosti mohou být zadány. Pokud je zadáno více možností /G:file
, použije se pouze poslední. Pokud se používá buď /G:file
nebo /C:string
, pak se předpokládá, že všechny argumenty bez volby jsou soubory pro vyhledávání., Pokud ani /G:file
ani /C:string
se používá, pak první non-možnost argumentem je zacházeno jako prostor oddělený seznam vyhledávacích podmínek.
názvy souborů nesmí být v souboru uvedeny při použití volby /F:FILE
.
názvy souborů mohou obsahovat mezery a další speciální znaky. Většina příkazů vyžaduje, aby byly tyto názvy souborů citovány. Ale volba FINDSTR /F:files.txt
vyžaduje, aby názvy souborů v souborech.txt nesmí být citován. Soubor nebude nalezen, pokud je název citován.
BUG-Short 8.,3 názvy souborů může zlomit /D
/S
možnosti
stejně Jako u všech Windows, příkazy, FINDSTR se bude snažit, aby odpovídaly jak dlouhý název a krátký 8.3 jméno při pohledu na soubory vyhledávat. Převzít aktuální složka obsahuje následující non-prázdné soubory:
b1.txtb.txt2c.txt
následující příkaz bude úspěšně najít všechny 3 soubory:
findstr /m "^" *.txt
b.txt2
zápasy, protože odpovídající zkrácený název B9F64~1.TXT
zápasů., To je v souladu s chováním všech ostatních příkazů systému Windows.
Ale chyba s /D
/S
volby způsobí, že následující příkazy pouze najít b1.txt
findstr /m /d:. "^" *.txtfindstr /m /s "^" *.txt
chyba brání b.txt2
nikdo nenašel, stejně jako všechny názvy souborů, které nějak po b.txt2
ve stejném adresáři. Další soubory, které seřazují dříve, jako a.txt
, jsou nalezeny., Další soubory, které seřadí později, jako d.txt
, jsou vynechány po spuštění chyby.
každý hledaný adresář je zpracován nezávisle. Například /S
možnost by úspěšně začít hledat v dětské složce poté, co nedokázal najít soubory v mateřské, ale jakmile chyba způsobuje krátký název souboru chybět v dítě, pak všechny následující soubory ve které dítě složka by být také minul.
příkazy fungují bez chyb, pokud jsou stejná jména souborů vytvořena na počítači, který má zakázanou generaci názvů NTFS 8.3., Samozřejmě b.txt2
by nebyl nalezen, ale c.txt
by bylo správně nalezeno.
ne všechny krátké názvy spouštějí chybu. Všechny instance štěnice chování jsem viděl zahrnovat rozšíření, které je delší než 3 znaky s krátkým 8.3 jméno, které začíná stejným jako normální jméno, které nevyžaduje 8.3 jméno.
chyba byla potvrzena na XP, Vista a Windows 7.,
Non-Tisknutelné znaky a /P
možnost/P
možnost příčiny FINDSTR přeskočit soubor, který obsahuje některý z následujících desetinných byte kódy:
0-7, 14-25, 27-31.
jinými slovy, volba /P
přeskočí pouze soubory, které obsahují netisknutelné ovládací znaky. Ovládací znaky jsou kódy menší nebo rovné 31 (0x1F)., FINDSTR léčí následující kontrolní znaky, jako tisknutelné:
8 0x08 backspace 9 0x09 horizontal tab10 0x0A line feed11 0x0B vertical tab12 0x0C form feed13 0x0D carriage return26 0x1A substitute (end of text)
Všechny ostatní řídicí znaky jsou chápány jako netisknutelné, jejichž přítomnost způsobuje, že /P
možnost přeskočit soubor.
Potrubím a Přesměrován vstup, může mít <CR><LF>
připojen
je-Li vstup pískali a poslední znak stream není <LF>
, pak FINDSTR bude automaticky připojit <CR><LF>
vstup. To bylo potvrzeno na XP, Vista a Windows 7., (Myslel jsem si, že potrubí Windows bylo zodpovědné za úpravu vstupu, ale od té doby jsem zjistil, že FINDSTR vlastně dělá modifikaci.)
totéž platí pro přesměrovaný vstup na Vista. Pokud poslední znak souboru používaného jako přesměrovaný vstup není <LF>
, FINDSTR automaticky připojí <CR><LF>
ke vstupu. XP a Windows 7 však nemění přesměrovaný vstup.
FINDSTR visí na XP a Windows 7, pokud přesměrovaný vstup nekončí <LF>
To je ošklivé „funkce“ na XP a Windows 7., Pokud poslední znak souboru používaného jako přesměrovaný vstup nekončí <LF>
, FINDSTR bude viset donekonečna, jakmile dosáhne konce přesměrovaného souboru.
Poslední řádek Odvedený údaje mohou být ignorovány, pokud se skládá z jednoho znaku
je-Li vstup pískali a poslední řádek se skládá z jediného znaku, který není následován <LF>
, pak FINDSTR zcela ignoruje poslední řádek.,
Příklad – první příkaz s jeden znak a ne <LF>
nepodaří zápas, ale druhý příkaz s 2 znaky, funguje dobře, stejně jako třetí příkaz, který má jeden znak s ukončením newline.
> set /p "=x" <nul | findstr "^"> set /p "=xx" <nul | findstr "^"xx> echo x| findstr "^"x
hlášeno uživatelem DosTips Sponge Belly při nové chybě findstr. Potvrzeno na XP, Windows 7 a Windows 8. Ještě jsem neslyšel o Vista. (Už nemám Vista k testování).
Možnost syntaxe
Možnost písmena se nerozlišují malá a velká písmena, takže /i
/I
jsou rovnocenné.,
Možnosti mohou být s předponou buď /
nebo -
Možnosti mohou být spojeny po jediné /
nebo -
. Seznam zřetězených možností však může obsahovat nanejvýš jednu možnost multicharacter, jako je OFF nebo F:, a volba více znaků musí být poslední možností v seznamu.,
následující jsou ekvivalentní způsoby, jak vyjádřit malá a velká písmena regex vyhledávání pro jakýkoliv řádek, který obsahuje i „ahoj“ a „sbohem“ v libovolném pořadí
-
/i /r /c:"hello.*goodbye" /c:"goodbye.*hello"
-
-i -r -c:"hello.*goodbye" /c:"goodbye.*hello"
-
/irc:"hello.*goodbye" /c:"goodbye.*hello"
Pokud hledaný řetězec začíná s /
nebo -
doslovný, pak /C
nebo /G
možnost musí být použita. Díky Stephanovi za nahlášení v komentáři (od smazání).,
omezení délky vyhledávacího řetězce
Na Vista maximální povolená délka jednoho vyhledávacího řetězce je 511 bajtů. Pokud nějaký vyhledávací řetězec překročí 511, výsledkem jeFINDSTR: Search string too long.
chyba s ERRORLEVEL 2.
při hledání regulárního výrazu je maximální délka vyhledávacího řetězce 254. Regulární výraz s délkou mezi 255 a 511 bude mít za následek chybu FINDSTR: Out of memory
s ERRORLEVEL 2. Délka regulárního výrazu >511 má za následek chybuFINDSTR: Search string too long.
.,
v systému Windows XP je délka vyhledávacího řetězce zřejmě kratší. Chyba Findstr: „vyhledávací řetězec příliš dlouhý“: jak extrahovat a porovnávat substráty ve smyčce“ pro“?Limit XP je 127 bajtů pro doslovné i regexové vyhledávání.
omezení délky řádku
soubory zadané jako argument příkazového řádku nebo pomocí volby / F: soubor nemají žádný známý limit délky řádku. Vyhledávání byla úspěšně spuštěna proti souboru 128MB, který neobsahoval jediný <LF>.
Piped data a přesměrovaný vstup je omezen na 8191 bajtů na řádek., Tento limit je“ funkcí “ FINDSTR. To není vlastní potrubí nebo přesměrování. FINDSTR pomocí přesměrovaného vstupu stdin nebo piped nikdy nebude odpovídat žádnému řádku, který je >=8K bajtů. Řádky > = 8K generují chybovou zprávu stderr, ale ERRORLEVEL je stále 0, pokud je vyhledávací řetězec nalezen alespoň v jednom řádku alespoň jednoho souboru.
Výchozí typ vyhledávání: Doslovný vs Regulární Výraz/C:"string"
– výchozí je /L doslovný. Explicitně kombinovat volbu /L S / C:“string“ jistě funguje, ale je redundantní.,
"string argument"
– výchozí hodnota závisí na obsahu prvního vyhledávacího řetězce. (Nezapomeňte, že<space> se používá k vymezení vyhledávacích řetězců.) Je-li první vyhledávací řetězec platným regulárním výrazem, který obsahuje alespoň jeden un-unikl meta-znak, pak jsou všechny vyhledávací řetězce považovány za regulární výrazy. Jinak jsou všechny vyhledávací řetězce považovány za literály., Například "51.4 200"
bude zacházeno jako dva regulární výrazy, protože první řetězec obsahuje un-utekl tečka, vzhledem k tomu "200 51.4"
bude zacházeno jako dva literály, protože první řetězec neobsahuje žádné meta-znaků.
/G:file
– výchozí hodnota závisí na obsahu prvního neprázdného řádku v souboru. Pokud je první vyhledávací řetězec platným regulárním výrazem, který obsahuje alespoň jeden un-unikl meta-znak, pak jsou všechny vyhledávací řetězce považovány za regulární výrazy., Jinak jsou všechny vyhledávací řetězce považovány za literály.
Doporučení – Vždy explicitně specifikovat /L
doslovný možnost nebo /R
regulární výraz volbou při používání "string argument"
nebo /G:file
.
chyba – zadání více doslovných vyhledávacích řetězců může poskytnout nespolehlivé výsledky
následující jednoduchý příklad FINDSTR nedokáže najít shodu, i když by měl.
echo ffffaaa|findstr /l "ffffaaa faffaffddd"
tato chyba byla potvrzena na Windows Server 2003, Windows XP, Vista a Windows 7.,
na Základě experimentů, FINDSTR může selhat, pokud všechny následující podmínky jsou splněny:
- vyhledávání pomocí více doslovný hledání řetězců
- vyhledávací řetězce jsou různých délek
- krátké vyhledávací řetězec má nějaké množství překrývají s delší vyhledávací řetězec
- vyhledávání je case sensitive (
/I
možnost)
V každém neúspěchu jsem viděl, to je vždy jedna z kratších vyhledávání řetězců, které se nezdaří.
pro více informací Podívejte se, proč tento příklad FINDSTR s více doslovnými vyhledávacími řetězci nenajde shodu?,
Citace a backslahses v argumenty příkazového řádku
Poznámka – Uživatele MC ND připomínky odrážet skutečnou strašlivě složitá pravidla pro tuto sekci. Existují 3 odlišné fáze analýzy:
- první cmd.,exe mohou vyžadovat některé citace, které mají být utekl jako ^“ (opravdu nic společného s FINDSTR)
- Další FINDSTR používá pre 2008 MS C/C++ argument parser, který má speciální pravidla pro “ a \
- Po hádce parser skončí, FINDSTR navíc léčí \ následuje alfanumerický znak jako literál, ale \ následovaný non-alfa-číselný znak jako znak escape
zbývající část zvýrazněnou část není 100% správné. Může sloužit jako vodítko pro mnoho situací, ale výše uvedená pravidla jsou vyžadována pro úplné porozumění.,
Útěk Nabídku do příkazového řádku hledání řetězců
Citace v rámci příkazového řádku, vyhledávací řetězce, musí být escapovány pomocí zpětné lomítko jako\"
. To platí jak pro doslovné, tak pro regexové vyhledávací řetězce. Tato informace byla potvrzena na XP, Vista a Windows 7.Poznámka: citace může být také nutné uniknout pro CMD.EXE parser, ale to nemá nic společného s FINDSTR., Například, hledat pro jednoduchou nabídku, kterou by mohla použít:
FINDSTR \^" file && echo found || echo not found
Útěk zpětné Lomítko do příkazového řádku doslovný hledání řetězců
zpětné Lomítko v doslovném vyhledávací řetězec může být obvykle reprezentován jako\
nebo\\
. Jsou obvykle ekvivalentní. (Ve Vista mohou být neobvyklé případy, kdy musí být zpětné lomítko vždy uniknuto, ale já nolonger mám stroj Vista k testování).ale existují některé zvláštní případy:
při hledání po sobě jdoucích zpětných lomítek musí být vše kromě posledního nahráno., Poslední zpětné lomítko může být volitelně unikl.
\\
mohou být kódovány jako\\\
nebo\\\\
\\\
mohou být kódovány jako\\\\\
nebo\\\\\\
Vyhledávání na jednu nebo více zpětná lomítka před citát je bizarní. Logicwould naznačují, že citace musí být unikl, a každý z leadingbackslashes bude muset být unikl, ale to nefunguje!, Místo toho,každý z předních zpětná lomítka musí být dvakrát utekl, a quoteis utekl obvykle:
\"
musí být kódovány jako\\\\\"
\\"
musí být kódovány jako\\\\\\\\\"
Jak již bylo uvedeno, jeden nebo více utekl citace může také vyžadovat útěku s
^
CMD parserinformace v tomto oddíle byla potvrzena na XP a Windows 7.,
Útěk zpětné Lomítko do příkazového řádku regex hledání řetězců
pouze windows Vista: zpětné Lomítko v regulárním výrazu musí být buď dvakrát utekl jako
\\\\
, nebo ještě jeden utekl ve třídě znaků nastavit jakoXP a Windows 7: Zpětné lomítko v regulárním výrazu může být vždy reprezentován jako
. Obvykle může být reprezentován jako
\\
. Ale to nikdy nefunguje, pokud zpětné lomítko předchází uniklému citátu.,aped citace musí buď bedouble utekl, jinak kódované jako
\"
může být kódováno jako\\\\\"
nebo\"
\\"
může být kódováno jako\\\\\\\\\"
nebo\"
nebo\\\"
Útěk Citovat a zpětné Lomítko v /G:FILE literal hledání řetězců
Samostatné uvozovky a zpětná lomítka v doslovném vyhledávací řetězec zadaný soubor /G:soubor nemusí být unikl, ale mohou být.,
"
a\"
jsou ekvivalentní.
\
a\\
jsou ekvivalentní.
Pokud je záměrem najít\\, musí být alespoň přední zpětné lomítko uniknuto. Oba\\\
a\\\\
práce.
Pokud je záměrem najít“, musí být alespoň přední zpětné lomítko uniknuto. Oba\\"
a\\\"
práce.,
Escaping Quote and Backslash within / G:file regex search strings
Toto je jediný případ, kdy escape sekvence fungují podle očekávání na základě dokumentace. Citát není regex metacharacter, takže nemusí být unikl (ale může být). Zpětné lomítko je regex metacharakter, takže musí být unikl.
znakové limity pro parametry příkazového řádku-rozšířená transformace ASCII
znak null (0x00) se nemůže objevit v žádném řetězci na příkazovém řádku. V řetězci se může objevit jakýkoli jiný znak jediného bajtu (0x01 – 0xFF)., FINDSTR však převádí mnoho rozšířených znaků ASCII, které najde v parametrech příkazového řádku, na jiné znaky. To má zásadní vliv dvěma způsoby:
-
Mnoho rozšířených znaků ASCII nebude odpovídat sami, pokud se používá jako vyhledávací řetězec na příkazovém řádku. Toto omezení je stejné pro doslovné a regexové vyhledávání. Pokud vyhledávací řetězec musí obsahovat rozšířený ASCII, měla by být místo toho použita volba
/G:FILE
. -
FINDSTR nemusí najít soubor, pokud název obsahuje rozšířené znaky ASCII a název souboru je zadán na příkazovém řádku., Pokud soubor, který má být prohledán, obsahuje v názvu rozšířenou ASCII, měla by se místo toho použít volba
/F:FILE
.
zde je kompletní seznam rozšířených transformací znaků ASCII, které FINDSTR provádí na řetězcích příkazového řádku. Každý znak je reprezentován jako desetinná hodnota bajtového kódu. První kód představuje znak dodaný na příkazovém řádku a druhý kód představuje znak, na který je transformován. Poznámka – Tento seznam byl sestaven na americkém stroji. Nevím, jaký dopad mohou mít jiné jazyky na tento seznam.,
158 treated as 080 199 treated as 221 226 treated as 071169 treated as 170 200 treated as 043 227 treated as 112176 treated as 221 201 treated as 043 228 treated as 083177 treated as 221 202 treated as 045 229 treated as 115178 treated as 221 203 treated as 045 231 treated as 116179 treated as 221 204 treated as 221 232 treated as 070180 treated as 221 205 treated as 045 233 treated as 084181 treated as 221 206 treated as 043 234 treated as 079182 treated as 221 207 treated as 045 235 treated as 100183 treated as 043 208 treated as 045 236 treated as 056184 treated as 043 209 treated as 045 237 treated as 102185 treated as 221 210 treated as 045 238 treated as 101186 treated as 221 211 treated as 043 239 treated as 110187 treated as 043 212 treated as 043 240 treated as 061188 treated as 043 213 treated as 043 242 treated as 061189 treated as 043 214 treated as 043 243 treated as 061190 treated as 043 215 treated as 043 244 treated as 040191 treated as 043 216 treated as 043 245 treated as 041192 treated as 043 217 treated as 043 247 treated as 126193 treated as 045 218 treated as 043 249 treated as 250194 treated as 045 219 treated as 221 251 treated as 118195 treated as 043 220 treated as 095 252 treated as 110196 treated as 045 222 treated as 221 254 treated as 221197 treated as 043 223 treated as 095198 treated as 221 224 treated as 097
libovolný znak >0 není v seznamu výše, je zacházeno jako se sobě, včetně <CR>
<LF>
. Nejjednodušší způsob, jak zahrnout zvláštní znaky jako <CR>
<LF>
je dostat je do proměnné prostředí a použití opožděná expanze v rámci argument příkazového řádku.,
znakové limity pro řetězce nalezené v souborech specifikovaných /G: FILE and / F: file options
v souboru se může objevit znak nul (0x00), ale funguje jako Terminátor řetězce C. Jakékoli znaky po znaku nul jsou považovány za jiný řetězec, jako by byly na jiném řádku.
<CR>
<LF>
znaky jsou chápány jako linky terminátory, že ukončit řetězec, a nejsou zahrnuty v řetězci.
všechny ostatní jednotlivé bajtové znaky jsou dokonale zahrnuty do řetězce.,
Vyhledávání Unicode soubory
FINDSTR nemůže správně hledat nejvíce Unicode (UTF-16, UTF-16LE, UTF-16BE, UTF-32), protože nelze hledat nul bajtů a Unicode obvykle obsahuje mnoho nul bajtů.
příkaz TYPE však převádí UTF-16LE s BOM na jednu znakovou sadu bajtů, takže příkaz jako následující bude pracovat s UTF-16LE s BOM.
type unicode.txt|findstr "search"
Všimněte si, že kódu Unicode body, které nejsou podporovány vaší kódové stránky budou převedeny na ?
znaky.,
je možné hledat UTF-8, pokud vyhledávací řetězec obsahuje pouze ASCII. Výstup konzoly všech více bajtů UTF-8 znaků však nebude správný. Pokud však přesměrujete výstup do souboru, bude výsledek správně kódován UTF-8. Všimněte si, že pokud soubor UTF-8 obsahuje BOM, pak bude BOM považován za součást prvního řádku, který by mohl odhodit vyhledávání, které odpovídá začátku řádku.
Pokud vložíte vyhledávací řetězec do kódovaného vyhledávacího souboru UTF-8 (bez BOM), je možné vyhledávat více bajtů UTF-8 a použít možnost /G.,
Konec Řádku
FINDSTR přestávky linky ihned po každé <LF>. Přítomnost nebo nepřítomnost <CR> nemá žádný vliv na konce řádků.
Vyhledávání napříč zalomení řádku
, Jak se očekávalo, .
regex metaznak nebude odpovídat <CR> nebo <LF>. Je však možné vyhledávat přes přerušení řádku pomocí vyhledávacího řetězce příkazového řádku., Oba <CR> <LF> znaky musí být uzavřeno výslovně. Pokud je nalezena víceřádková shoda, vytiskne se pouze 1.řádek zápasu. FINDSTR se pak zdvojnásobí zpět na 2. řádek ve zdroji a začne hledat znovu – druh funkce typu“ look ahead“.
Předpokládejme TEXT.,TXT má tento obsah (může být Unix nebo Windows styl)
AAABAA
Pak tento skript
dává tyto výsledky.
1:A2:A5:A
Vyhledávání napříč zalomení řádku pomocí /G:SOUBOR možností je nepřesný, protože jediný způsob, jak, aby odpovídaly <CR> nebo <LF> je pomocí regulárního výrazu znak třídy rozsah vyjádření, že sendviče na EOL znaků.,
-
matches <LF>, but it also matches <TAB> and <0x0B>
-
matches <CR>, but it also matches <0x0C> and !
Note – the above are symbolic representations of the regex byte stream since I can’t graphically represent the characters.,
odpověď pokračovala v části 2 níže…