Prefață
o mare parte din informațiile din acest răspuns au fost colectate pe baza experimentelor rulate pe o mașină Vista. Dacă nu se specifică altfel în mod explicit, nu am confirmat dacă informațiile se aplică altor versiuni Windows.

ieșire FINDSTR
documentația nu deranjează niciodată să explice ieșirea FINDSTR. Se face aluzie la faptul că liniile de potrivire sunt tipărite, dar nimic mai mult.,formatul ieșirii liniei de potrivire este următorul:

Nume fișier:lineNumber:lineOffset:text

unde

Nume fișier: = numele fișierului care conține linia de potrivire. Numele fișierului nu este imprimat dacă cererea a fost în mod explicit pentru un singur fișier, sau în cazul în care căutarea de intrare prin conducte sau de intrare redirecționat. Când este tipărit, numele fișierului va include întotdeauna orice informație de cale furnizată. Informații suplimentare despre cale vor fi adăugate dacă se utilizează opțiunea /S. Calea imprimată este întotdeauna în raport cu calea furnizată sau în raport cu directorul curent, dacă nu este furnizată.,

Notă – prefixul numelui de fișier pot fi evitate atunci când caută mai multe fișiere prin utilizarea non-standard (și slab documentate) metacaractere < și >. Regulile exacte pentru modul în care funcționează aceste metacaractere pot fi găsite aici. În cele din urmă, vă puteți uita la acest exemplu despre modul în care metacaracterele non-standard funcționează cu FINDSTR.

lineNumber: = numărul liniei liniei de potrivire reprezentat ca o valoare zecimală cu 1 reprezentând linia 1 a intrării. Tipărit numai dacă este specificată opțiunea /N.,

lineOffset: = decalajul octetului zecimal al începutului liniei de potrivire, cu 0 reprezentând primul caracter al liniei 1. Tipărit numai dacă este specificată opțiunea /O. Acest lucru nu este compensarea meciului în cadrul liniei. Este numărul de octeți de la începutul fișierului până la începutul liniei.

text = binar de reprezentare de potrivire linie, inclusiv orice <CR> și/sau <DACĂ>., Nimic nu este lăsat în afara ieșirii binare, astfel încât acest exemplu care se potrivește cu toate liniile va produce o copie binară exactă a fișierului original.

FINDSTR "^" FILE >FILE_COPY

opțiunea /A stabilește culoarea numelui fișierului:, lineNumber:, și lineOffset: numai ieșire. Textul liniei de potrivire este întotdeauna afișat cu culoarea curentă a consolei. Opțiunea / A are efect numai atunci când ieșirea este afișată direct pe consolă. Opțiunea /a nu are efect dacă ieșirea este redirecționată către un fișier sau prin conducte., Vezi 2018-08-18 edita în Aacini răspunsul pentru o descriere a buggy comportament atunci când producția este redirecționat către CON.

cele Mai multe caractere de control și multe caractere din setul ASCII extins de afișare ca puncte pe XP
FINDSTR pe XP afișează cele mai non-imprimabile de control de caractere de potrivire linii ca puncte (perioadele) de pe ecran. Următoarele caractere de control sunt excepții; de a se afișa ca pe ei înșiși: 0x09 Tab, 0x0A Tractor, 0x0B Vertical Tab, 0x0C Form Feed, 0x0D Retur de car.XP FINDSTR convertește, de asemenea, un număr de caractere ASCII extinse la puncte, de asemenea., Caracterele ASCII extinse care se afișează ca puncte pe XP sunt aceleași cu cele care sunt transformate atunci când sunt furnizate pe linia de comandă. Consultați secțiunea” limite de caractere pentru parametrii liniei de comandă – transformare ASCII extinsă”, mai târziu în acest post

caracterele de Control și ASCII extinse nu sunt convertite în puncte pe XP dacă ieșirea este transmisă prin conducte, redirecționată către un fișier sau în cadrul unei clauze FOR in ().Vista și Windows 7 afișează întotdeauna toate caracterele ca ele însele, niciodată ca puncte.,

coduri de retur (ERRORLEVEL)

  • 0 (SUCCES)
    • meci a fost găsit în cel puțin o linie de cel puțin un fișier.
  • 1 (eșec)
    • nici o potrivire a fost găsit în orice linie de orice fișier.,iv id=”b01f5d4aef”>, /D: sau /G:
    • Fișierul specificat prin /F:file sau /G:file nu a fost găsit
  • 255 (eroare)
    • Prea multe expresie regulată clasa de caracter termeni
      vezi Regex clasa de caracter pe termen limită și BUG-uri în partea a 2-a răspuns

Sursa de date pentru căutare (Actualizat pe baza de teste cu Windows 7)
Findstr pot căuta date numai de una dintre următoarele surse:

  • nume de fișiere specificate ca argumente și/sau folosind /F:file opțiune.,

  • stdin prin redirecționarea findstr "searchString" <file

  • fluxul de date dintr-o țeavă type file | findstr "searchString"

Argumente/opțiuni întâietate față de redirecționare, care are prioritate față de conducte de date.

argumentele numelui fișierului și /F:file pot fi combinate. Pot fi utilizate mai multe argumente nume de fișier. Dacă sunt specificate mai multe opțiuni /F:file, atunci se utilizează numai ultima. Wild cards sunt permise în argumente nume de fișier, dar nu în fișierul indicat de /F:file.,

Sursa de siruri de caractere de căutare (Actualizat pe baza de teste cu Windows 7)
/G:file și /C:string opțiuni pot fi combinate. Pot fi specificate mai multe opțiuni /C:string. Dacă sunt specificate mai multe opțiuni /G:file, atunci se utilizează numai ultima. Dacă se utilizează fie /G:file, fie /C:string, atunci se presupune că toate argumentele non-opțiune sunt fișiere de căutat., Dacă nu se utilizează nici /G:file și nici /C:string, atunci primul argument non-opțiune este tratat ca o listă delimitată de termeni de căutare.

numele fișierelor nu trebuie să fie citate în fișier atunci când se utilizează opțiunea /F:FILE.
numele fișierelor pot conține spații și alte caractere speciale. Majoritatea comenzilor necesită ca astfel de nume de fișiere să fie citate. Dar FINDSTR /F:files.txt opțiune necesită ca nume de fișiere în fișiere.txt nu trebuie citat. Fișierul nu va fi găsit dacă numele este citat.

BUG-scurt 8.,3 nume de fișiere pot rupe /D și /S opțiuni
Ca cu toate comenzile de Windows, FINDSTR va încerca pentru a se potrivi atât nume lung și scurt 8.3 numele atunci când căutați fișiere pentru a căuta. Presupunem folderul curent conține următoarele non-fișiere goale:

b1.txtb.txt2c.txt

comanda următoare va găsi cu succes toate cele 3 fișiere:

findstr /m "^" *.txt

b.txt2 meciuri deoarece corespunzătoare nume scurt B9F64~1.TXT identificări., Acest lucru este în concordanță cu comportamentul tuturor celorlalte comenzi Windows.

Dar un bug cu /D și /S opțiuni determină următoarele comenzi pentru a găsi doar b1.txt

findstr /m /d:. "^" *.txtfindstr /m /s "^" *.txt

bug previne b.txt2 de a fi găsit, precum și toate numele de fișiere care sortare după b.txt2 în același director. Se găsesc fișiere suplimentare care sortează înainte, cum ar fi a.txt., Fișierele suplimentare care sortează mai târziu, cum ar fi d.txt, sunt pierdute odată ce eroarea a fost declanșată.fiecare director căutat este tratat independent. De exemplu, /S opțiune ar cu succes a începe căutarea într-un dosar copil după ce a eșuat pentru a găsi fișiere în părinte, dar odată ce bug produce un scurt nume de fișier pentru a fi ratat în copil, apoi ulterioare fișiere în acest dosar copil ar fi, de asemenea, pierdut.comenzile funcționează fără erori dacă aceleași nume de fișiere sunt create pe o mașină care are dezactivată generarea de nume NTFS 8.3., Desigur b.txt2nu ar fi găsit, dar c.txt ar fi găsit corect.

nu toate numele scurte declanșează eroarea. Toate cazurile de comportament bugged pe care le-am văzut implică o extensie care este mai lungă decât caracterele 3 cu un nume scurt 8.3 care începe la fel ca un nume normal care nu necesită un nume 8.3.

eroarea a fost confirmată pe XP, Vista și Windows 7.,

caractere Non-Printabile și /P opțiunea
/P opțiune cauze FINDSTR pentru a sări peste orice fișier care conține oricare din următoarele zecimal octet coduri:
0-7, 14-25, 27-31.

pune un alt mod,/P opțiune va sări doar fișiere care conțin caractere de control non-imprimabile. Caracterele de Control sunt coduri mai mici sau egale cu 31 (0x1F)., FINDSTR tratează următoarele caractere de control ca de tipărit:

 8 0x08 backspace 9 0x09 horizontal tab10 0x0A line feed11 0x0B vertical tab12 0x0C form feed13 0x0D carriage return26 0x1A substitute (end of text)

Toate celelalte caractere de control sunt tratate ca non-printabile, a căror prezență determină /P opțiunea de a sări peste fișiere.

prin Conducte și Redirecționat de intrare poate fi <CR><LF> anexată
Dacă intrarea este prin conducte și ultimul caracter din stream nu este <LF>, apoi FINDSTR va adăuga automat <CR><LF> la intrare. Acest lucru a fost confirmat pe XP, Vista și Windows 7., (Am crezut că conducta Windows a fost responsabilă pentru modificarea intrării, dar de atunci am descoperit că FINDSTR face de fapt modificarea.)

același lucru este valabil și pentru intrarea redirecționată pe Vista. Dacă ultimul caracter dintr-un fișier folosit ca redirecționat de intrare nu este <LF>, apoi FINDSTR va adăuga automat <CR><LF> la intrare. Cu toate acestea, XP și Windows 7 nu modifică intrarea redirecționată.FINDSTR se blochează pe XP și Windows 7 Dacă intrarea redirecționată nu se termină cu <LF>
aceasta este o „caracteristică” urâtă pe XP și Windows 7., Dacă ultimul caracter al unui fișier folosit ca intrare redirecționată nu se termină cu <LF>, atunci FINDSTR va atârna pe termen nelimitat odată ce ajunge la sfârșitul fișierului redirecționat.

Ultima linie de Conducte date pot fi ignorate, dacă acesta constă dintr-un singur caracter
Dacă intrarea este prin conducte și în ultimul vers este format dintr-un singur caracter care nu este urmat de <LF>, apoi FINDSTR ignoră complet pe ultima linie.,

Exemplu – prima comanda cu un singur personaj și nu <LF> nu reușește să se potrivi, dar cea de-a doua comanda cu 2 caractere functioneaza bine, la fel ca cea de-a treia comanda, care are un caracter cu încheiere newline.

> set /p "=x" <nul | findstr "^"> set /p "=xx" <nul | findstr "^"xx> echo x| findstr "^"x

raportate de DosTips utilizator burete burta la New findstr bug. Confirmat pe XP, Windows 7 și Windows 8. Nu am auzit încă despre Vista. (Nu mai am Vista pentru a testa).

Opțiune sintaxa
Opțiune scrisori nu sunt case sensitive, deci /i și /I sunt echivalente.,

Opțiuni pot fi prefixate cu / sau -Opțiuni pot fi concatenate după o singură / sau -. Cu toate acestea, lista de opțiuni concatenate poate conține cel mult o opțiune cu mai multe caractere, cum ar fi OFF sau F:, iar opțiunea cu mai multe caractere trebuie să fie ultima opțiune din listă.,

în urma sunt moduri echivalente de a exprima un caz insensibil regex de căutare pentru orice linie care conține atât „bună ziua” și „la revedere” în orice ordine

  • /i /r /c:"hello.*goodbye" /c:"goodbye.*hello"

  • -i -r -c:"hello.*goodbye" /c:"goodbye.*hello"

  • /irc:"hello.*goodbye" /c:"goodbye.*hello"

Dacă un șir de căutare începe cu un / sau - literal, atunci /C sau /G opțiune trebuie să fie utilizate. Mulțumesc lui Stephan pentru că a raportat acest lucru într-un comentariu (de când a fost șters).,

limitele lungimii șirului de căutare
pe Vista lungimea maximă permisă pentru un singur șir de căutare este de 511 octeți. Dacă orice șir de căutare depășește 511, atunci rezultatul este o eroare FINDSTR: Search string too long. cu ERRORLEVEL 2.

când efectuați o căutare regulată a expresiilor, lungimea maximă a șirului de căutare este 254. O expresie regulată cu o lungime cuprinsă între 255 și 511 va avea ca rezultat o eroare FINDSTR: Out of memory cu ERRORLEVEL 2. O expresie regulată lungime >511 rezultate în FINDSTR: Search string too long. eroare.,

pe Windows XP, lungimea șirului de căutare este aparent mai scurtă. Eroare Findstr: „șir de căutare prea lung”: cum să extrageți și să potriviți substringul în bucla” pentru”?Limita XP este de 127 octeți atât pentru căutările literale, cât și pentru cele regex.

limitele lungimii liniei
fișierele specificate ca argument în linia de comandă sau prin opțiunea /F:FILE nu au o limită cunoscută a lungimii liniei. Căutările au fost rulate cu succes împotriva unui fișier de 128 MB care nu conținea un singur <LF>.

date Piped și Redirecționat de intrare este limitat la 8191 octeți pe linie., Această limită este o „caracteristică” a FINDSTR. Nu este inerent conductelor sau redirecționării. FINDSTR folosind stdin redirecționat sau intrare prin conducte nu se va potrivi cu orice linie care este > =8K octeți. Lines >= 8k generează un mesaj de eroare la stderr, dar ERRORLEVEL este încă 0 Dacă șirul de căutare se găsește în cel puțin o linie de cel puțin un fișier.

tipul implicit de căutare: Literal vs expresie regulată
/C:"string" – implicit este /L literal. Combinarea explicită a opțiunii /L cu / C:” string ” funcționează cu siguranță, dar este redundantă.,

"string argument" – valoarea implicită depinde de conținutul primului șir de căutare. (Amintiți-vă că <space> este folosit pentru a delimita șirurile de căutare.) Dacă primul șir de căutare este o expresie regulată validă care conține cel puțin un meta-caracter scăpat, atunci toate șirurile de căutare sunt tratate ca expresii regulate. În caz contrar, toate șirurile de căutare sunt tratate ca literali., De exemplu, "51.4 200" vor fi tratate ca două expresii regulate pentru primul șir conține un onu-a scăpat punct, întrucât "200 51.4" va fi tratat ca doi literali pentru prima șirul nu conține nici un meta-caractere.

/G:file – valoarea implicită depinde de conținutul primei linii ne-goale din fișier. Dacă primul șir de căutare este o expresie regulată validă care conține cel puțin un meta-caracter scăpat, atunci toate șirurile de căutare sunt tratate ca expresii regulate., În caz contrar, toate șirurile de căutare sunt tratate ca literali.

Recomandare – Întotdeauna în mod explicit /L literal opțiune sau /R expresie regulată opțiune atunci când se utilizează "string argument" sau /G:file.

specificarea mai multor șiruri de căutare literale poate da rezultate nesigure

următorul exemplu simplu FINDSTR nu reușește să găsească o potrivire, chiar dacă ar trebui.

echo ffffaaa|findstr /l "ffffaaa faffaffddd"

această eroare a fost confirmată pe Windows Server 2003, Windows XP, Vista și Windows 7.,

Bazat pe experimente, FINDSTR poate eșua dacă toate condițiile următoare sunt îndeplinite:

  • căutare este folosind mai multe literal siruri de caractere de căutare
  • siruri de caractere de căutare sunt de lungimi diferite
  • Un scurt șir de căutare are o anumită cantitate de suprapunere cu un mai lung șir de căutare
  • căutare este case sensitive (nu /I opțiune)

În fiecare eșec-am văzut, este întotdeauna una dintre cele mai scurte siruri de caractere de căutare, care nu reușește.

pentru mai multe informații, consultați de ce acest exemplu FINDSTR cu mai multe șiruri de căutare literale nu găsește o potrivire?,

Citate și backslahses în argumente în linia de comandă
Notă – Utilizator MC ND comentarii reflecta real groaznic reguli complicate pentru această secțiune. Există 3 faze distincte de parsare implicate:

  • primul cmd.,exe ar putea necesita unele citate să fie scăpat ca ^” (într-adevăr nimic de-a face cu FINDSTR)
  • Next FINDSTR utilizează pre 2008 MS C/C++ argument parser, care are reguli speciale pentru ” și \
  • După argumentul parser finisaje, FINDSTR în plus, tratează \ urmată de o alfa-numerice, caracter literal, dar \ urmată de non-alfa-numerice, caracter, ca un caracter escape

restul evidențiată nu este 100% corecte. Poate servi drept ghid pentru multe situații, dar regulile de mai sus sunt necesare pentru o înțelegere totală.,

evadarea citat în linia de comandă șiruri de căutare
citate în linia de comandă șiruri de căutare trebuie să fie scăpat cu backslash ca\". Acest lucru este valabil atât pentru șirurile de căutare literale, cât și pentru regex. Această informație a fost confirmată pe XP, Vista și Windows 7.

Notă: este posibil să fie necesar ca citatul să fie scăpat pentru CMD.Exe parser, dar acest lucru nu are nimic de-a face cu FINDSTR., De exemplu, pentru a căuta un citat ai putea folosi:

FINDSTR \^" file && echo found || echo not found

Evadarea Backslash în linia de comandă literal siruri de caractere de căutare
Backslash într-un literal șir de căutare în mod normal, poate fi reprezentat ca\ sau \\. Ele sunt de obicei echivalente. (Pot exista cazuri neobișnuite în Vista în care backslash – ul trebuie să fie întotdeauna scăpat, dar nolonger am o mașină Vista pentru a testa).

dar există câteva cazuri speciale:

când căutați backslash-uri consecutive, toate, cu excepția ultimelor, trebuie să fie înregistrate., Ultimul backslash poate fi opțional scăpat.

  • \\ pot fi codificate ca \\\ sau \\\\
  • \\\ pot fi codificate ca \\\\\ sau \\\\\\

în Căutarea pentru unul sau mai multe bare oblice inverse înainte de un citat este bizar. Logicwould sugerează că citatul trebuie să fie scăpat, și fiecare dintre leadingbackslashes ar trebui să fie scăpat, dar aceasta nu funcționează!, În schimb,unul dintre cei mai importanti backslash-uri trebuie să fie dublu scăpat, și quoteis scăpat în mod normal:

  • \" trebuie să fie codificate ca \\\\\"
  • \\" trebuie să fie codificate ca \\\\\\\\\"

după Cum sa menționat anterior, una sau mai multe scăpat citate pot, de asemenea, nevoie de a scăpa cu ^ pentru CMD parser

informațiile din această secțiune a fost confirmat pe XP și Windows 7.,

Evadarea Backslash în linia de comandă regex siruri de caractere de căutare

  • doar pe Vista: Backslash într-un regex trebuie să fie dublu scăpat ca \\\\, sau altceva scăpat singur într-o clasă de caractere stabilit ca

  • XP și Windows 7: Backslash într-un regex pot fi întotdeauna reprezentate ca . În mod normal, poate fi reprezentat ca \\. Dar acest lucru nu funcționează niciodată dacă backslash-ul precede un citat scăpat.,aped citat trebuie să fie bedouble scăpat, sau altceva codificate ca

    • \" poate fi codificate ca \\\\\" sau \"
    • \\" poate fi codificate ca \\\\\\\\\" sau \" sau \\\"

Evadarea Citat și Backslash în termen de /G:FIȘIERUL literal siruri de caractere de căutare
Independent citate și backslash-uri într-un literal șir de căutare fișier specificat de /G:fișier nu trebuie să fie scăpat, dar ele pot fi.,

" și \" sunt echivalente.

\ și \\ sunt echivalente.

Dacă intenția este de a găsi \\, atunci cel puțin backslash-ul principal trebuie scăpat. Ambele \\\și \\\\ de lucru.

dacă intenția este de a găsi”, atunci cel puțin backslash-ul principal trebuie scăpat. Ambele \\"și \\\" de lucru.,

evadarea citat și Backslash în /G: file Regex siruri de căutare
acesta este singurul caz în care secvențele de evacuare funcționează cum era de așteptat pe baza documentației. Citatul nu este un metacaracter regex, deci nu trebuie scăpat (dar poate fi). Backslash este un metacaracter regex, așa că trebuie să fie scăpat.

limite de caractere pentru parametrii liniei de comandă – transformare ASCII extinsă
caracterul nul (0x00) nu poate apărea în niciun șir din linia de comandă. Orice alt caracter octet unic poate apărea în șir (0x01 – 0xff)., Cu toate acestea, FINDSTR convertește multe caractere ASCII extinse pe care le găsește în parametrii liniei de comandă în alte caractere. Acest lucru are un impact major în două moduri:

  1. multe caractere ASCII extinse nu se vor potrivi dacă sunt utilizate ca șir de căutare pe linia de comandă. Această limitare este aceeași pentru căutările literale și regex. Dacă un șir de căutare trebuie să conțină ASCII extins, atunci trebuie utilizată opțiunea /G:FILE.FINDSTR poate să nu găsească un fișier dacă numele conține caractere ASCII extinse și numele fișierului este specificat în linia de comandă., Dacă un fișier de căutat conține ASCII extins în nume, atunci ar trebui utilizată opțiunea /F:FILE.

Iată o listă completă a transformărilor de caractere ASCII extinse pe care FINDSTR le efectuează pe șiruri de linie de comandă. Fiecare caracter este reprezentat ca valoarea codului octet zecimal. Primul cod reprezintă caracterul furnizat pe linia de comandă, iar al doilea cod reprezintă caracterul în care este transformat. Notă-această listă a fost compilată pe o mașină din SUA. Nu știu ce impact pot avea alte limbi pe această listă.,

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

Orice caracter >0 nu se afla in lista de mai sus este tratată în sine, inclusiv <CR> și <LF>. Cel mai simplu mod de a include caractere ciudate ca <CR> și <LF> este de a le obține într-o variabilă de mediu și de a folosi expansiune întârziată în argument linie de comandă.,

limitele caracterelor pentru șirurile găsite în fișierele specificate de /G:FILE și /f:opțiuni FILE
caracterul nul (0x00) poate apărea în fișier, dar funcționează ca Terminatorul șirului C. Orice caractere după un caracter nul sunt tratate ca un șir diferit ca și cum ar fi pe o altă linie.

<CR> și <LF> caractere sunt tratate ca terminatori de linie care termina un șir de caractere, și nu sunt incluse în șir.toate celelalte caractere cu un singur octet sunt incluse perfect într-un șir de caractere.,căutarea fișierelor Unicode FINDSTR nu poate căuta în mod corespunzător majoritatea Unicode (UTF-16, UTF-16le, UTF-16be, UTF-32) deoarece nu poate căuta octeți nul și Unicode conține de obicei mulți octeți nul.

cu toate acestea, comanda TYPE convertește UTF-16le cu BOM într-un singur set de caractere octet, astfel încât o comandă ca următoarea va funcționa cu UTF-16le cu BOM.

type unicode.txt|findstr "search"

Rețineți că codul Unicode puncte care nu sunt acceptate de activ cod de pagina va fi convertit la ? caractere.,este posibil să căutați UTF-8 atâta timp cât șirul dvs. de căutare conține numai ASCII. Cu toate acestea, ieșirea consolei a oricăror caractere UTF-8 multi-octet nu va fi corectă. Dar dacă redirecționați ieșirea către un fișier, atunci rezultatul va fi codificat corect UTF-8. Rețineți că, dacă fișierul UTF-8 conține un BOM, atunci BOM-ul va fi considerat ca parte a primei linii, ceea ce ar putea arunca o căutare care se potrivește cu începutul unei linii.

este posibil să căutați caractere UTF-8 multi-octet dacă puneți șirul de căutare într-un fișier de căutare codificat UTF-8 (fără BOM) și utilizați opțiunea / G.,

sfârșitul liniei
FINDSTR rupe liniile imediat după fiecare<LF>. Prezența sau absența <CR> nu are niciun impact asupra pauzelor de linie.

Căutarea în mai multe pauze de linie
Cum era de așteptat, . regex metacharacter nu se va potrivi <CR> sau <DACĂ>. Dar este posibil să căutați într-o pauză de linie folosind un șir de căutare în linia de comandă., Ambele <CR> și <DACĂ> caractere trebuie să fie compensată în mod explicit. Dacă se găsește o potrivire cu mai multe linii, se imprimă numai prima linie a meciului. FINDSTR se dublează apoi la linia 2nd din sursă și începe căutarea din nou – un fel de caracteristică de tip „look ahead”.

asumați textul.,TXT are conținutul (ar putea fi Unix sau Windows style)

AAABAA

Atunci acest script

oferă aceste rezultate

1:A2:A5:A

Căutarea în mai multe pauze de linie folosind /G:FIȘIER opțiune este imprecisă pentru că singura cale pentru a se potrivi <CR> sau <DACĂ> este printr-un regex clasa de caracter gama expresie care sandwich-uri EOL caractere.,

  • 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.,răspunsul a continuat în partea 2 de mai jos…

Articles

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *