Esipuhe
suuri osa tämän vastauksen tiedoista on kerätty Vista-koneella suoritettujen kokeiden perusteella. Ellei nimenomaisesti toisin mainita, en ole vahvistanut, onko tietoa koskee muut Windows-versiot.
FINDSTR-ulostulo
dokumentaatio ei koskaan vaivaudu selittämään findstrin ulostuloa. Se viittaa siihen, että vastaavat rivit on painettu, mutta ei mitään muuta.,
muoto matching line lähtö on seuraava:
nimi:lineNumber:lineOffset:teksti
missä
fileName: = tiedoston nimi, joka sisältää matching rivi. Tiedoston nimeä ei ole painettu, jos pyyntö oli nimenomaisesti tarkoitettu yhdelle tiedostolle, tai jos etsitään piped input tai uudelleenohjattu tulo. Tulostettaessa tiedostonimi sisältää aina kaikki annetut polkutiedot. Lisää reittitietoja lisätään, jos käytetään /S
– vaihtoehtoa. Painettu polku on aina suhteessa edellyttäen polku, tai suhteessa nykyiseen hakemistoon, jos ei mitään anneta.,
Huomautus – tiedostonimen etuliite voidaan välttää, kun etsivät useita tiedostoja käyttämällä ei-standardi (ja huonosti dokumentoitu) yleismerkkejä <
ja >
. Tarkat säännöt siitä, miten nämä Jokerit toimivat, löytyvät täältä. Lopuksi, voit tarkastella tätä esimerkkiä siitä,miten epätyypilliset Jokerit toimivat FINDSTR.
lineNumber: = linjan numero matching line edustettuina desimaalin arvo 1 eli 1 line input. Painettu vain, jos/N
optio on määritelty.,
lineOffset: = desimaalin tavu offset aloittaa matching rivi, jossa 0 edustaa 1. luonne 1. rivi. Painettu vain, jos/O
optio on määritelty. Tämä ei ole ottelun tasoitus linjan sisällä. Se on tavujen määrä tiedoston alusta rivin alkuun.
teksti = binary edustus matching line, mukaan lukien kaikki <OP> ja/tai <JOS>., Mitään ei jätetä pois binäärilähtö, niin että tämä esimerkki, joka vastaa kaikki linjat tuottaa tarkka binäärinen kopio alkuperäisestä tiedostosta.
FINDSTR "^" FILE >FILE_COPY
/A-vaihtoehto asettaa väri tiedostonimi:, lineNumber:, ja lineOffset: vain lähtö. Vastaavan rivin teksti on aina tulostettu nykyisen konsolin värillä. / A-vaihtoehto vaikuttaa vain, kun lähtö näytetään suoraan konsolille. / A-vaihtoehdolla ei ole vaikutusta, jos ulostulo ohjataan tiedostoon tai pipetoidaan., Katso 2018-08-18 muokkaa Aacini on vastaus kuvaus buginen käyttäytymistä, kun ulostulo ohjataan CON.
Useimmat ohjaus merkkiä ja monet laajennetun ASCII-merkistön merkkejä näyttö pisteinä XP
FINDSTR XP näyttää useimmat ei-tulostettavia ohjaus merkkejä vastaavat rivit kuin pisteitä (kaudet) näytöllä. Seuraavat valvonta-hahmot ovat poikkeuksia; ne näyttää kuin itseään: 0x09-Välilehti, 0x0A LineFeed, 0x0B Pystysuora Välilehti, 0x0C arkinsyöttö, 0x0D rivinvaihdon.
XP FINDSTR muuntaa myös useita laajennettuja ASCII-merkkejä pisteiksi., Laajennettu ASCII-merkkiä, jotka näytetään pisteinä XP ovat samat kuin ne, jotka muuttuvat, kun ne suoritetaan komentorivillä. Katso ”Merkki rajat komentorivin parametrit – Laajennetun ASCII-merkistön muutos” – osiossa, myöhemmin tämä viesti
Ohjaus merkkiä ja laajennettu ASCII eivät muuntaa pisteitä XP jos lähtö johdetaan, ohjataan tiedostoon, tai siten, että SILLÄ () – lauseke.
Vista ja Windows 7 näyttävät aina kaikki merkit omana itsenään, ei koskaan pisteinä.,
Paluu-Koodit (ERRORLEVEL)
- 0 (menestys)
- löytyi ainakin yksi linja vähintään yksi tiedosto.
- 1 (failure)
- mistään tiedoston rivistä ei löytynyt vastaavaa.,iv id=”b01f5d4aef”>,
/D:
tai/G:
- Tiedosto määritelty
/F:file
tai/G:file
ei löytynyt
- mistään tiedoston rivistä ei löytynyt vastaavaa.,iv id=”b01f5d4aef”>,
- 255 (virhe)
- Liian monta säännöllisen lausekkeen hahmo-luokan ehdot
katso Regex merkki luokka aikavälin raja-ja BUG 2 osan vastaus
- Liian monta säännöllisen lausekkeen hahmo-luokan ehdot
Lähde tietojen haku (Päivitetty perustuvat testit Windows 7)
Findstr voi etsiä tietoja vain yksi seuraavista lähteistä:
-
tiedostonimet määritelty, koska perustelut ja/tai käyttämällä
/F:file
vaihtoehto., -
stdin kautta redirection
findstr "searchString" <file
-
tiedot stream-putki
type file | findstr "searchString"
Perustelut/vaihtoehdot etusijalla uudelleenohjaus, joka ohittaa kalkkiviivoilla tiedot.
tiedostonimen argumentit ja /F:file
voidaan yhdistää. Voidaan käyttää useita tiedostonimen argumentteja. Jos määritellään useita /F:file
vaihtoehtoja, käytetään vain viimeistä. Villit kortit ovat sallittuja filename-argumenteissa, mutta eivät /F:file
osoittamassa tiedostossa.,
Lähde hakukomennot (Päivitetty perustuvat testit Windows 7)/G:file
ja /C:string
valinnat voidaan yhdistää. Useita /C:string
vaihtoehtoja voidaan määrittää. Jos määritellään useita /G:file
vaihtoehtoja, käytetään vain viimeistä. Jos joko /G:file
tai /C:string
käytetään, niin kaikki ei-vaihtoehto argumentteja oletetaan tiedostoja etsiä., Jos kumpikaan /G:file
eikä /C:string
käytetään, niin ensimmäinen ei-optio-argumentti on käsitelty tilaa eroteltu lista hakusanoja.
tiedostonimiä ei saa siteerata tiedoston sisällä käytettäessä/F:FILE
– vaihtoehtoa.
tiedostonimet voivat sisältää välilyöntejä ja muita erikoismerkkejä. Useimmat komennot edellyttävät, että tällaiset tiedostonimet lainataan. Mutta FINDSTR /F:files.txt
vaihtoehto edellyttää, että tiedostonimet sisällä tiedostoja.txt: tä ei saa siteerata. Tiedostoa ei löydy, jos nimi on lainattu.
BUG-Short 8.,3 tiedostonimet voi rikkoa /D
ja /S
valinnat
Kuten kaikki Windows komentoja, FINDSTR pyrkii vastaamaan sekä pitkä nimi ja lyhyt 8.3 nimi, kun etsii tiedostoja etsiä. Olettaa, nykyinen kansio sisältää seuraavat ei-tyhjä tiedostot:
b1.txtb.txt2c.txt
seuraava komento onnistuneesti löytää kaikki 3 tiedostot:
findstr /m "^" *.txt
b.txt2
ottelut, koska vastaava lyhyt nimi B9F64~1.TXT
sanavaihtoehdot., Tämä vastaa kaikkien muiden Windows-komentojen käyttäytymistä.
Mutta bugi /D
ja /S
valinnat aiheuttaa seuraavat komennot vain löytää b1.txt
findstr /m /d:. "^" *.txtfindstr /m /s "^" *.txt
bug estää b.txt2
mistä löydetään, sekä kaikki tiedostojen nimet, jotka lajitella jälkeen b.txt2
samassa hakemistossa. Aiemmin Lajittelemattomat lisätiedostot, kuten a.txt
, löytyvät., Lisää tiedostot, jotka tavallaan myöhemmin, kuten d.txt
, ovat jääneet, kun vika on lauennut.
jokainen haettu Hakemisto käsitellään itsenäisesti. Esimerkiksi /S
vaihtoehto olisi onnistuneesti alkaa etsiä lapsen kansioon, kun se ei löydä tiedostoja vanhempi, mutta kun vika aiheuttaa lyhyt-tiedoston nimi saa hukata lasta, kaikki seuraavat tiedostot että lapsi kansio olisi myös kaivannut.
komennot toimivat virheettömästi, jos samat tiedostonimet luodaan koneelle, jolla on NTFS 8.3-nimisukupolvi pois käytöstä., Tietenkin b.txt2
voisi olla löytyi, mutta c.txt
olisi löytynyt kunnolla.
kaikki lyhyet nimet eivät laukaise vikaa. Kaikki esiintymät kuunnellaan käyttäytymistä olen nähnyt liittyy laajennus, joka on pidempi kuin 3 merkkiä lyhyt 8.3 nimi, joka alkaa samalla kuin normaali nimi, joka ei vaadi 8.3 nimi.
vika on vahvistettu XP: ssä, Vistassa ja Windows 7: ssä.,
Ei-Tulostettavia merkkejä ja /P
vaihtoehto/P
vaihtoehto aiheuttaa FINDSTR ohittaa minkä tahansa tiedoston, joka sisältää jonkin seuraavista desimaalin tavua koodit:
0-7, 14-25, 27-31.
toisella tavalla Sanottuna: /P
vaihtoehto vain ohittaa tiedostoja, jotka sisältävät ei-tulostettavia ohjaus merkkiä. Ohjausmerkit ovat koodeja, jotka ovat enintään 31 (0x1F)., FINDSTR kohtelee seuraavat valvonta-merkkiä kuin tulostettava:
8 0x08 backspace 9 0x09 horizontal tab10 0x0A line feed11 0x0B vertical tab12 0x0C form feed13 0x0D carriage return26 0x1A substitute (end of text)
Kaikki muut ohjaus-merkkejä kohdellaan ei-tulostettava, jonka läsnäolo aiheuttaa /P
mahdollisuus ohittaa tiedoston.
Johdetaan ja Ohjataan input voi olla <CR><LF>
liitteenä
Jos tulo on kalkkiviivoilla ja viimeinen merkki stream ei ole <LF>
, niin FINDSTR. exe automaattisesti liittää <CR><LF>
tulo. Tämä on vahvistettu XP, Vista ja Windows 7., (Minulla oli tapana ajatella, että Windows pipe oli vastuussa muokkaamalla tulo, mutta olen sittemmin huomannut, että FINDSTR todella tekee muutoksen.)
sama pätee Vistassa uudelleenohjattuun tuloon. Jos viimeinen merkki on tiedosto käytetään ohjataan tulo ei ole <LF>
, niin FINDSTR. exe automaattisesti liittää <CR><LF>
tulo. XP ja Windows 7 eivät kuitenkaan muuta uudelleenohjattua syötettä.
FINDSTR roikkuu XP ja Windows 7, jos ohjataan tulo ei lopu <LF>
Tämä on ikävä ”ominaisuus” on XP ja Windows 7., Jos viimeinen merkki on tiedosto käytetään ohjataan tulo ei lopu <LF>
, niin FINDSTR roikkua loputtomiin, kun se saapuu lopussa ohjataan tiedostoon.
Viimeinen rivi Johdetaan tiedot voidaan jättää huomiotta, jos se koostuu yhden merkin
Jos tulo on kalkkiviivoilla ja viimeinen rivi koostuu yhdestä hahmo, joka ei seuraa <LF>
, niin FINDSTR sivuutetaan täysin viimeinen rivi.,
Esimerkki – ensimmäinen komento, jossa yhden merkin ja ei <LF>
ei vastaa, mutta toinen komento, jossa on 2 merkkiä toimii hyvin, samoin kolmas komento, joka on yksi merkki päättämisestä rivinvaihto.
> set /p "=x" <nul | findstr "^"> set /p "=xx" <nul | findstr "^"xx> echo x| findstr "^"x
ilmoittamia DosTips käyttäjä Sieni Vatsa uuden findstr bug. Vahvistettu XP, Windows 7 ja Windows 8. En ole vielä kuullut Vistasta. (Minulla ei ole enää Vistaa testattavana).
Vaihtoehto syntaksi
Vaihtoehto kirjaimia ei isot ja pienet kirjaimet, joten /i
ja /I
vastaavat.,
Valinnat voivat olla joko etuliitteellä /
tai -
Valinnat voivat olla ketjutettuja jälkeen yhden /
tai -
. Konkatenoitu optiolista voi kuitenkin sisältää korkeintaan yhden monikarttisen vaihtoehdon, kuten OFF tai F:, ja monimerkkisen vaihtoehdon on oltava listan viimeinen vaihtoehto.,
seuraavat ovat kaikki samanarvoisia tapoja ilmaista asia tunteeton regex haku mistään line, joka sisältää sekä ”hei” ja ”näkemiin” missä tahansa järjestyksessä
-
/i /r /c:"hello.*goodbye" /c:"goodbye.*hello"
-
-i -r -c:"hello.*goodbye" /c:"goodbye.*hello"
-
/irc:"hello.*goodbye" /c:"goodbye.*hello"
Jos haettava merkkijono alkaa /
tai -
kirjaimellisesti, niin /C
tai /G
vaihtoehto on käytettävä. Kiitos Stephan raportoida tämän Kommentti (sittemmin poistettu).,
Haku Merkkijonon pituus rajoitukset
Vista suurin sallittu pituus yhden haun merkkijono on 511 tavua. Jos jokin hakusana ylittää 511 sitten tulos on FINDSTR: Search string too long.
virhe ERRORLEVEL-2.
säännöllistä lausekkeiden hakua tehdessä Hakuketjun enimmäispituus on 254. Säännöllinen lauseke, jonka pituus välillä 255 ja 511 johtaa FINDSTR: Out of memory
virhe ERRORLEVEL-2. Säännöllisen lausekkeen pituus >511 tulokset FINDSTR: Search string too long.
virhe.,
Windows XP: ssä Hakuketjun pituus on ilmeisesti lyhyempi. Findstr virhe: ”haku merkkijono liian pitkä”: miten poimia ja ottelu alustat ” for ” silmukka?XP-raja on 127 tavua sekä kirjaimellisissa että regex-Hauissa.
Rivin Pituus rajoituksia
Tiedostot määritetty komentorivillä kautta tai /F:TIEDOSTO-vaihtoehto ei ole tiedossa linjan pituus raja. Haut olivat menestyksekkäästi ajaa vastaan 128MB tiedosto, joka ei sisällä yhtään <JOS>.
Piped data ja uudelleenohjattu tulo on rajoitettu 8191 tavuun per rivi., Tämä raja on FINDSTR: n” ominaisuus”. Se ei ole luontainen putket tai uudelleenohjaus. Findstr käyttäen uudelleenohjattua stdin-tai piped-syöttöä ei koskaan vastaa mitään linjaa, joka on >=8k tavua. Rivit >= 8k tuottaa virheilmoituksen stderr, mutta ERRORLEVEL on edelleen 0, jos hakumerkkijonoa on löytynyt vähintään yksi rivi ainakin yksi tiedosto.
oletustyyppi haku: kirjaimellinen vs säännöllinen lauseke/C:"string"
– oletusarvo on / L kirjaimellinen. Nimenomaisesti yhdistämällä / L vaihtoehto /C: ”merkkijono” varmasti toimii, mutta on tarpeeton.,
"string argument"
– oletus riippuu sisällöstä ensimmäinen hakusana. (Muista, että <tilaa> käytetään rajata haku jouset.) Jos ensimmäinen hakujono on kelvollinen säännöllinen lauseke, joka sisältää vähintään yhden paenneen meta-merkin, kaikkia hakujonoja käsitellään tavallisina lausekkeina. Muuten kaikkia hakunaruja kohdellaan lukutaitoisina., Esimerkiksi "51.4 200"
kohdellaan kuin kaksi säännöllisiä lausekkeita, koska ensimmäinen merkkijono sisältää yk-pakeni piste, kun taas "200 51.4"
kohdellaan kuin kaksi literaaleja, koska ensimmäinen merkkijono ei sisällä meta-merkkiä.
/G:file
– oletusarvo riippuu tiedoston ensimmäisen tyhjän rivin sisällöstä. Jos ensimmäinen hakujono on kelvollinen säännöllinen lauseke, joka sisältää vähintään yhden paenneen meta-merkin, kaikkia hakujonoja käsitellään tavallisina lausekkeina., Muuten kaikkia hakunaruja kohdellaan lukutaitoisina.
Suositus – Aina erikseen määritellä /L
kirjaimellinen vaihtoehto tai /R
säännöllinen lauseke vaihtoehto, kun käytät "string argument"
tai /G:file
.
BUG – Täsmennetään useita kirjaimellinen etsiä merkkijonoja voi antaa epäluotettavia tuloksia
seuraavat yksinkertainen FINDSTR esimerkki ei löydä ottelu, vaikka se olisi.
echo ffffaaa|findstr /l "ffffaaa faffaffddd"
Tämä bugi on vahvistettu, Windows Server 2003, Windows XP, Vista ja Windows 7.,
Perustuu kokeiluja, FINDSTR voi epäonnistua, jos kaikki seuraavat edellytykset täyttyvät:
- haku käyttää useita kirjaimellinen hakukomennot
- haku jouset ovat eri pituisia
- lyhyen merkkijonon on jonkin verran päällekkäisyyttä pidemmän search string
- haku on isot ja pienet kirjaimet (ei
/I
vaihtoehto)
jokainen epäonnistuminen olen nähnyt, se on aina yksi lyhyempi hakukomennot, että epäonnistuu.
katso lisätietoja miksi tämä FINDSTR-esimerkki, jossa on useita kirjaimellisia hakukieliä, löytää sopivan?,
Lainauksia ja backslahses sisällä komentoriviargumentteja
Note – Käyttäjä MC ND: n kommentteja vastaa todellista järkyttävän monimutkaisia sääntöjä tässä jaksossa. Mukana on 3 erillistä jäsennysvaihetta:
- ensimmäinen cmd.,exe voi vaatia joitakin lainauksia voidaan pakeni kuin ^” (oikeasti ole mitään tekemistä FINDSTR)
- Seuraava FINDSTR käyttää pre 2008 MS C/C++ argumentti parser, joka on erityisiä sääntöjä ” ja \
- sen Jälkeen, kun väite parser päättyy, FINDSTR lisäksi herkkuja \ seurasi alfa-numeerinen merkki kuin kirjaimellinen, mutta \ seurasi ei-aakkosnumeerinen merkki kuin escape-merkki
jäljellä tässä korostettu osio ei ole 100% oikein. Se voi toimia ohjenuorana monissa tilanteissa, mutta edellä mainittuja sääntöjä tarvitaan kokonaisymmärrykseen.,
Pakenevat Lainaus kuluessa command line haku-merkkijonot
Lainausmerkit sisällä command line haku jouset on karannut kenoviiva kuten\"
. Tämä pätee sekä kirjaimellisiin että regex-hakunaruihin. Asiaa on vahvistettu, XP, Vista ja Windows 7.huomaa: sitaatti voi myös joutua pakenemaan CMD: n vuoksi.EXE parser, mutta tällä ei ole mitään tekemistä FINDSTRIN kanssa., Esimerkiksi, jos haluat etsiä yksi lainaus voit käyttää:
FINDSTR \^" file && echo found || echo not found
Pakenevat Kenoviiva sisällä command line kirjaimellinen hakukomennot
Kenoviiva kirjaimellisesti merkkijonon voi yleensä olla edustettuna\
tai\\
. Ne ovat tyypillisesti ekvivalentteja. (Voi olla unusualcases Vista, jossa kenoviiva on aina karannut, mutta en enää on Vista-kone-testi).mutta on joitakin erikoistapauksia:
etsiessään peräkkäisiä takaiskuviivoja, kaikki paitsi viimeinen on pesittävä., Viimeinen takapakki voi mahdollisesti karata.
\\
voi olla koodattu kuten\\\
tai\\\\
\\\
voi olla koodattu kuten\\\\\
tai\\\\\\
Etsivät yksi tai useampi kenoviivoja ennen kuin tarjous on outo. Logicwould viittaavat siihen, että lainaus on karannut, ja jokainen leadingbackslashes olisi karannut, mutta tämä ei toimi!, Sen sijaan,jokainen johtavia kenoviivoja on oltava kaksinkertainen pakeni, ja quoteis pakeni normaalisti:
\"
koodataan kuten\\\\\"
\\"
koodataan kuten\\\\\\\\\"
Kuten aiemmin todettiin, yksi tai useampi pakeni lainaukset voivat myös vaatia karkaaminen
^
CMD parserinfo tässä osiossa on vahvistettu XP ja Windows 7.,
Pakenevat Kenoviiva sisällä command line regex haku naruista
vain Vista: Kenoviiva in regex täytyy olla joko kaksinkertainen pakeni, kuten
\\\\
, tai muu yksittäinen pakeni sisällä merkki luokka asettaa kutenXP ja Windows 7: Kenoviiva in regex voi aina olla edustettuna
. Se voidaan yleensä esittää nimellä
\\
. Mutta tämä ei toimi, jos takaisku edeltää karannutta sitaattia.,aped lainaus on joko bedouble pakeni, tai muu ei koodattu kuten
\"
voi olla koodattu kuten\\\\\"
tai\"
\\"
voi olla koodattu kuten\\\\\\\\\"
tai\"
tai\\\"
Pakenevat Lainaus ja Kenoviiva sisällä /G:TIEDOSTO kirjaimellisesti hakukomennot
Itsenäinen lainausmerkit ja kenoviivat sisällä kirjaimellinen search string tiedosto määritelty /G:tiedoston ei tarvitse olla karannut, mutta ne voivat olla.,
"
ja \"
vastaavat.
\
ja \\
vastaavat.
Jos tarkoitus on löytää \\, niin ainakin johtava kenoviiva on karannut. Sekä \\\
että \\\\
toimivat.
Jos tarkoitus on löytää ”, niin ainakin johtava kenoviiva on karannut. Sekä \\"
että \\\"
toimivat.,
Pakenevat Lainaus ja Kenoviiva sisällä /G:TIEDOSTO regex haku-merkkijonot
Tämä on yksi tapaus, jossa paeta sekvenssit toimi odotetulla perustuvat asiakirjat. Lainaus ei ole regex metacharacter, joten sitä ei tarvitse karata (mutta voi olla). Backslash on regex metacharacter, joten se on paettava.
– Merkki rajat komentorivin parametrit – Laajennetun ASCII-merkistön muutos
null merkki (0x00) voi esiintyä missä tahansa merkkijono komentorivillä. Mikä tahansa muu yksittäinen tavumerkki voi esiintyä merkkijonossa (0x01 – 0xFF)., FINDSTR kuitenkin muuntaa monia laajennettuja ASCII-merkkejä, joita se löytää komentoriviparametrien sisällä, muiksi merkeiksi. Tällä on merkittävä vaikutus kahdella tavalla:
-
Monet laajennetun ASCII-merkistön merkkejä ei vastaa itse, jos käyttää hakumerkkijonoa komentorivillä. Tämä rajoitus on sama kirjaimellisissa ja regex-Hauissa. Jos Hakuketjun on sisällettävä laajennettu ASCII, sen sijaan tulisi käyttää
/G:FILE
– vaihtoehtoa. -
FINDSTR voi epäonnistua löytää tiedosto, jos nimi sisältää laajennetun ASCII-merkkejä ja tiedoston nimi on määritetty komentorivillä., Jos etsittävä tiedosto sisältää nimeen laajennetun ASCII: n, sen sijaan tulisi käyttää
/F:FILE
– vaihtoehtoa.
Tässä on täydellinen luettelo laajennettu ASCII muutoksia, että FINDSTR suorittaa komentoriviltä jouset. Jokainen merkki esitetään desimaalin tavukoodin arvona. Ensimmäinen koodi edustaa komentorivillä toimitettua merkkiä, ja toinen koodi edustaa sen muuntamaa merkkiä. Huomautus-Tämä luettelo on koottu Yhdysvaltain kone. En tiedä, mikä vaikutus muilla kielillä voi olla tähän luetteloon.,
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
mikä Tahansa merkki >0 ja joita ei ole edellä olevassa luettelossa on käsitelty itse, mukaan lukien <CR>
ja <LF>
. Helpoin tapa sisällyttää outoa merkit, kuten <CR>
ja <LF>
on saada ne osaksi muuttujan ja käyttää viivästynyt laajennus komentoriviltä argumentti.,
– Merkki rajat jouset löydy tiedostot, jotka on määritetty /G:TIEDOSTON ja /F:TIEDOSTO-asetukset
nul (0x00) – merkki voi ilmestyä tiedosto, mutta se toimii kuten C string terminator. Kaikki nul-merkin jälkeiset merkit käsitellään eri merkkijonona kuin ne olisivat toisella rivillä.
<CR>
ja <LF>
merkkejä kohdellaan line terminaattoreita, joka lopettaa merkkijonon, ja eivät sisälly merkkijono.
kaikki muut single byte-merkit sisältyvät täydellisesti merkkijonoon.,
Haku Unicode-tiedostoja
FINDSTR. exe ei voi oikein etsiä kaikkein Unicode (UTF-16, UTF-16LE, UTF-16BE, UTF-32), koska se voi etsiä nul tavua ja Unicode sisältää tyypillisesti monia nul tavua.
Kuitenkin, KIRJOITA komento muuntaa UTF-16LE kanssa BOM single byte character set, niin komento, kuten seuraavat toimii UTF-16LE kanssa BOM.
type unicode.txt|findstr "search"
Huomaa, että Unicode-koodi pistettä, jotka eivät tue aktiivista koodi sivu muunnetaan ?
merkkiä.,
UTF-8: n haku on mahdollista, kunhan hakunarusi sisältää vain ASCII: n. Kaikkien multi-byte UTF-8-merkkien konsolitulos ei kuitenkaan pidä paikkaansa. Mutta jos ohjaat ulostulon tiedostoon, niin tulos on oikein koodattu UTF-8. Huomaa, että jos UTF-8-tiedosto sisältää BOM, niin TUOTERAKENTEEN pidetään osa ensimmäinen rivi, joka voisi heittää pois haku, joka vastaa rivin alkuun.
on mahdollista, etsiä multi-tavu UTF-8 merkkiä jos laittaa haun merkkijono UTF-8-koodattu search file (ei BOM), ja käyttää /G vaihtoehto.,
rivin loppu
FINDSTR rikkoo rivit heti jokaisen <LF>. Läsnäolo tai puuttuminen <OP> ei ole vaikutusta rivinvaihtoja.
Haku koko rivinvaihdot
Kuten odotettua, .
regex metacharacter ei täsmää <OP> tai <JOS>. Rivitauon yli on kuitenkin mahdollista etsiä komentorivin hakujonolla., Sekä <OP> ja <JOS> hahmot on sovitettu erikseen. Jos monivivahteinen ottelu löytyy, tulostetaan vain ottelun 1. rivi. FINDSTR sitten kaksinkertaistuu takaisin 2. rivi lähde ja alkaa etsiä uudestaan – eräänlainen ”katsoa eteenpäin” tyyppinen ominaisuus.
oletetaan teksti.,TXT on näiden sisältö (voisi olla Unix-tai Windows-tyyliin)
AAABAA
Sitten tämä kirjoitus
antaa nämä tulokset
1:A2:A5:A
Etsivät yli line taukoja käyttämällä /G:TIEDOSTO vaihtoehto on epätarkka, koska ainoa tapa ottelu <OP> tai <JOS> on kautta regex merkki luokka-alue-lauseke, joka voileipiä EOL merkkiä.,
-
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.,
vastaus jatkui alla olevassa osassa 2…