Előszó
a válaszban szereplő információk nagy részét a Vista gépen végzett kísérletek alapján gyűjtötték össze. Hacsak kifejezetten másként nem jelezzük, nem erősítettem meg, hogy az információ más Windows verziókra is vonatkozik-e.
FINDSTR kimenet
a dokumentáció soha nem zavarja a FINDSTR kimenet magyarázatát. Utal arra a tényre, hogy a megfelelő vonalak nyomtatásra kerülnek, de semmi több.,
a megfelelő sor kimenetének formátuma a következő:
fájlnév: lineNumber:lineOffset: text
ahol
fájlnév: = a megfelelő sort tartalmazó fájl neve. A fájl neve nem kerül kinyomtatásra, ha a kérés kifejezetten egyetlen fájlra vonatkozik, vagy ha vezetékes bemenetre vagy átirányított bemenetre keres. Nyomtatáskor a fájlnév mindig tartalmazza a megadott útvonaladatokat. További útvonalinformációk kerülnek hozzáadásra, ha a /S
opciót használják. A nyomtatott elérési út mindig a megadott elérési úthoz vagy az aktuális könyvtárhoz viszonyítva van, ha nincs megadva.,
megjegyzés-a fájlnév előtag kerülhető több fájl keresésekor a nem szabványos (és rosszul dokumentált) helyettesítő karakterek használatával <
és >
. A helyettesítő karakterek működésének pontos szabályai itt találhatók. Végül megnézheti ezt a példát, hogy a nem szabványos helyettesítő karakterek hogyan működnek a FINDSTR-rel.
lineNumber: = a megfelelő sor sorszáma tizedes értékként jelenik meg, az 1 pedig a bemenet 1.sorát képviseli. Csak akkor nyomtatható, ha /N
opció van megadva.,
lineOffset: = a tizedes bájt eltolása a kezdete a megfelelő sor, 0 képviselő 1. karakter az 1. sorban. Csak akkor nyomtatható, ha/O
opció van megadva. Ez nem az eltolás a mérkőzés a vonalon belül. Ez a bájtok száma a fájl kezdetétől a sor elejéig.
text = a megfelelő sor bináris ábrázolása, beleértve a <CR> és/vagy <LF>., Semmi sem marad ki a bináris kimenet, oly módon, hogy ez a példa, amely megfelel az összes sort fog egy pontos bináris másolatot az eredeti fájlt.
FINDSTR "^" FILE >FILE_COPY
Az /A opció beállítja a fájlnév színét:, lineNumber:, and lineOffset: output only. A megfelelő sor szövege mindig az aktuális konzolszínnel jelenik meg. Az / A opció csak akkor érvényes, ha a kimenet közvetlenül a konzolra jelenik meg. Az / a opciónak nincs hatása, ha a kimenetet átirányítja egy fájlra vagy csővezetékre., Lásd a 2018-08-18 szerkesztés Aacini válasza egy leírást a hibás viselkedés, ha a kimenet irányítva CON.
a Legtöbb vezérlő karakterek, valamint sok kiterjesztett ASCII karakter jelenik meg, mint pontok XP
FINDSTR az XP megjeleníti a legtöbb nem-nyomtatható vezérlő karakterek a megfelelő vonalak, mint pontok (időszakokban) a képernyőn. A következő vezérlő karakterek kivételek; magukként jelennek meg: 0x09 Tab, 0x0A Lineefeed, 0x0b függőleges fül, 0x0C Form Feed, 0x0D kocsi Return.
XP FINDSTR is átalakítja számos kiterjesztett ASCII karakterek pontok is., A kiterjesztett ASCII karakterek, amelyek pontokként jelennek meg az XP-n, ugyanazok, mint azok, amelyek átalakulnak, amikor a parancssorba kerülnek. Lásd a “Karakter korlátozza a parancssori paraméterek – Kiterjesztett ASCII átalakulás” című részben, később ez a post
a Vezérlő karakterek, valamint a kiterjesztett ASCII vagy nem alakul át pontok XP ha a kimenet vezetékes, átirányított, hogy egy fájlt, vagy belül, A() záradék.
A Vista és a Windows 7 mindig minden karaktert önmagaként, soha nem pontként jelenít meg.,
visszatérési kódok (ERRORLEVEL)
- 0 (siker)
- Match legalább egy fájl sorában megtalálható.
- 1 (failure)
- egyetlen fájl sorában sem találtak egyezést.,iv id=”b01f5d4aef”>,
/D:
vagy a/G:
- Fájl által megadott
/F:file
vagy/G:file
nem talált
- egyetlen fájl sorában sem találtak egyezést.,iv id=”b01f5d4aef”>,
- 255 (hiba)
- Túl sok reguláris kifejezés karakterosztály feltételek
lásd Regex karakterosztály távú határérték HIBA 2. rész a választ
- Túl sok reguláris kifejezés karakterosztály feltételek
az adatok Forrása a keresés (Frissítve tesztek alapján a Windows 7)
Findstr keresés adatokat a csak az egyik, a következő források:
-
fájlnév megadva, mint érveket és/vagy használja a
/F:file
lehetőséget., -
stdin átirányítás útján
findstr "searchString" <file
-
adatfolyam egy csőből
type file | findstr "searchString"
argumentumok/opciók elsőbbséget élveznek az átirányítással szemben, amely elsőbbséget élvez a vezetékes adatokkal szemben.
fájlnév argumentumok és /F:file
kombinálhatók. Több fájlnév argumentum is használható. Ha több /F:file
opció van megadva, akkor csak az utolsó használható. Wild cards are allowed in filename arguments, but not within the file pointed to by /F:file
.,
Keresési karakterláncok forrása (frissítve A Windows 7 tesztjei alapján)
a /G:file
és /C:string
opciók kombinálhatók. Több /C:string
opció is megadható. Ha több /G:file
opció van megadva, akkor csak az utolsó használható. Ha vagy /G:file
vagy /C:string
kerül felhasználásra, akkor minden nem opció argumentumot feltételeznek a kereséshez., Ha sem a /G:file
, sem a /C:string
nem kerül felhasználásra, akkor az első nem opció argumentumot a keresési kifejezések szóközzel elválasztott listájaként kezelik.
a/F:FILE
opció használatakor a fájlneveket nem szabad idézni a fájlban.
A fájlnevek szóközöket és más speciális karaktereket tartalmazhatnak. A legtöbb parancs megköveteli az ilyen fájlnevek idézését. De a FINDSTR /F:files.txt
opció megköveteli, hogy a fájlnevek a fájlokon belül legyenek.a txt-t nem szabad idézni. A fájl nem található, ha a nevet idézik.
BUG – Short 8.,3 a fájlnevek megszakíthatják a/D
és/S
opciók
mint minden Windows parancs esetében, a FINDSTR megpróbálja egyeztetni mind a hosszú nevet, mind a rövid 8.3 nevet, amikor keres fájlokat a kereséshez. Tegyük fel, hogy az aktuális mappa a következő nem üres fájlokat tartalmazza:
b1.txtb.txt2c.txt
a következő parancs sikeresen megtalálja az összes 3 fájlt:
findstr /m "^" *.txt
b.txt2
mérkőzések, mert a megfelelő Rövid név B9F64~1.TXT
mérkőzések., Ez összhangban van az összes többi Windows parancs viselkedésével.
de a/D
és/S
opciók miatt a következő parancsok csak ab1.txt
a hiba megakadályozzab.txt2
a megtalálástól, valamint az összes fájlnév, amely ab.txt2
után rendeződik ugyanabban a könyvtárban. További fájlok találhatók, amelyek korábban rendeződnek, mint például a a.txt
., További fájlok, amelyek később rendeződnek, mint például a d.txt
, a hiba aktiválása után hiányoznak.
minden keresett könyvtárat önállóan kezelünk. Például a /S
opció sikeresen megkezdi a keresést egy gyermek mappában, miután nem talált fájlokat a szülőben, de ha a hiba miatt egy rövid fájlnév hiányzik a gyermekben, akkor az összes későbbi fájl abban a gyermek mappában is hiányozni fog.
a parancsok hibamentesen működnek, ha ugyanazok a fájlnevek jönnek létre egy olyan gépen, amely NTFS 8.3 névgenerációt letiltott., Természetesen b.txt2
nem található, de c.txt
megfelelő lenne.
nem minden Rövid név váltja ki a hibát. Minden esetben a poloska viselkedés láttam járnak kiterjesztése, amely hosszabb, mint 3 karakter egy rövid 8.3 nevet, hogy kezdődik ugyanaz, mint egy normál nevet, amely nem igényel 8.3 nevet.
a hibát XP, Vista és Windows 7 rendszeren is megerősítették.,
nem nyomtatható karakterek és a /P
opció
a/P
opció miatt a FINDSTR kihagyja a következő tizedes bájtkódok bármelyikét tartalmazó fájlt:
0-7, 14-25, 27-31.
másképpen fogalmazva: a /P
opció csak azokat a fájlokat hagyja ki, amelyek nem nyomtatható vezérlő karaktereket tartalmaznak. Vezérlő karakterek kódok kisebb vagy egyenlő 31 (0x1F)., A FINDSTR a következő vezérlő karaktereket kezeli nyomtathatónak:
8 0x08 backspace 9 0x09 horizontal tab10 0x0A line feed11 0x0B vertical tab12 0x0C form feed13 0x0D carriage return26 0x1A substitute (end of text)
az összes többi vezérlő karakter nem nyomtatható, amelynek jelenléte a /P
lehetőséget okozza a fájl kihagyására.
a Vezetékes, illetve Átirányított bemeneti lehet, hogy a <CR><LF>
csatolt
Ha a bemenet, mikor pedig az utolsó karakter a patak nem <LF>
, majd a FINDSTR automatikusan hozzáfűzi <CR><LF>
a bemenet. Ezt XP, Vista és Windows 7 rendszeren is megerősítették., (Régebben azt gondoltam, hogy a Windows cső volt a felelős a bemenet módosításáért, de azóta rájöttem, hogy a FINDSTR valóban elvégzi a módosítást.)
ugyanez igaz a Vista átirányított bemenetére is. Ha az átirányított bemenetként használt fájl utolsó karaktere nem <LF>
, akkor a FINDSTR automatikusan hozzáfűzi a <CR><LF>
a bemenethez. Az XP és a Windows 7 azonban nem változtatja meg az átirányított bemenetet.
A FINDSTR az XP-n és a Windows 7-en lóg, ha az átirányított bemenet nem ér véget <LF>
Ez egy csúnya” funkció ” XP-n és Windows 7-en., Ha az átirányított bemenetként használt fájl utolsó karaktere nem ér véget a <LF>
fájllal, akkor a FINDSTR határozatlan ideig lefagy, ha eléri az átirányított fájl végét.
A vezetékes adatok utolsó sora figyelmen kívül hagyható, ha egyetlen karakterből áll
Ha a bemenet be van vezetve, és az utolsó sor egyetlen karakterből áll, amelyet nem követ <LF>
, akkor a FINDSTR teljesen figyelmen kívül hagyja az utolsó sort.,
példa – az első parancs egyetlen karakterrel és no<LF>
nem egyezik meg, de a második parancs 2 karakterrel jól működik, csakúgy, mint a harmadik parancs, amelynek egy karaktere van a newline megszüntetésével.
> set /p "=x" <nul | findstr "^"> set /p "=xx" <nul | findstr "^"xx> echo x| findstr "^"x
jelentette dostips felhasználó szivacs hasa új findstr bug. Megerősítve XP, Windows 7 és Windows 8 rendszeren. Még nem hallottam Vista-ról. (Már nincs Vista tesztelni).
Option syntax
Option letters are not case sensitive, so /i
and /I
are equivalent.,
Az Opciók előtagja lehet:/
vagy-
az Opciók egyetlen/
vagy-
. Az összefűzött opciólista azonban legfeljebb egy többkarakteres opciót tartalmazhat, például Ki vagy F:, a többkarakteres opciónak pedig a lista utolsó opciójának kell lennie.,
A következő vagy az egyenértékű módon fejezik ki esetben érzéketlen regex keresés minden olyan sort, amely tartalmazza mind a “helló”, valamint a “viszlát” bármilyen sorrendben
-
/i /r /c:"hello.*goodbye" /c:"goodbye.*hello"
-
-i -r -c:"hello.*goodbye" /c:"goodbye.*hello"
-
/irc:"hello.*goodbye" /c:"goodbye.*hello"
Ha egy kereső string elején egy /
vagy -
szó, akkor a /C
vagy /G
beállítást kell használni. Köszönet Stephan jelentési ezt a megjegyzést (mivel törölve).,
search String length limits
Vista esetén az egyetlen keresési karakterlánc megengedett maximális hossza 511 bájt. Ha bármelyik keresési karakterlánc meghaladja az 511-et, akkor az eredmény egy FINDSTR: Search string too long.
hiba az ERRORLEVEL 2-vel.
reguláris kifejezéskeresés esetén a maximális keresési karakterlánc hossza 254. Egy 255 és 511 közötti hosszúságú reguláris kifejezés FINDSTR: Out of memory
hibát eredményez az ERRORLEVEL 2-vel. A reguláris kifejezés hossza >511 a FINDSTR: Search string too long.
hibát eredményezi.,
Windows XP esetén a keresési karakterlánc hossza nyilvánvalóan rövidebb. Findstr error: “Search string too long”: hogyan lehet kibontani és illeszteni a “for” loop-ba?Az XP limit 127 bájt mind a szó szerinti, mind a regex keresésekhez.
sorhossz limits
parancssori argumentumként vagy a /F:fájl opción keresztül megadott fájloknak Nincs ismert sorhossz-korlátja. A keresések sikeresen futottak egy 128 MB-os fájl ellen, amely nem tartalmazott egyetlen <LF>.
A vezetékes adatok és az átirányított bemenetek soronként 8191 bájtra korlátozódnak., Ez a határ a FINDSTR “jellemzője”. Ez nem jellemző a csövekre vagy az átirányításra. FINDSTR átirányított stdin vagy vezetékes bemenet használatával soha nem egyezik meg olyan sorral, amely > =8k bájt. Sorok > = 8k hibaüzenetet generál az stderr-nek, de az ERRORLEVEL továbbra is 0, ha a keresési karakterlánc legalább egy fájl sorában megtalálható.
alapértelmezett keresési típus: Literal vs reguláris kifejezés
/C:"string"
– az alapértelmezett /l szó. Kifejezetten ötvözi a / L opciót /C: “string” biztosan működik, de redundáns.,
"string argument"
– az alapértelmezett az első keresési karakterlánc tartalmától függ. (Ne feledje, hogy a<space> a keresési karakterláncok határolására szolgál.) Ha az első keresési karakterlánc egy érvényes reguláris kifejezés, amely legalább egy un-escaped meta-karaktert tartalmaz, akkor az összes keresési karakterláncot reguláris kifejezésként kezelik. Ellenkező esetben minden keresési karakterláncot literálisnak tekintünk., Például a "51.4 200"
két reguláris kifejezésként lesz kezelve, mivel az első karakterlánc egy megszökött pontot tartalmaz, míg a "200 51.4"
két literálként fog kezelni, mivel az első karakterlánc nem tartalmaz meta-karaktereket.
/G:file
– az alapértelmezett érték a fájl első nem üres sorának tartalmától függ. Ha az első keresési karakterlánc egy érvényes reguláris kifejezés, amely legalább egy un-escaped meta-karaktert tartalmaz, akkor az összes keresési karakterláncot reguláris kifejezésként kezelik., Ellenkező esetben minden keresési karakterláncot literálisnak tekintünk.
ajánlás – mindig kifejezetten adja meg a/L
szó opciót vagy/R
reguláris kifejezés opciót, ha a"string argument"
vagy/G:file
.
BUG-több szó szerinti keresési karakterlánc megadása megbízhatatlan eredményeket adhat
a következő egyszerű FINDSTR példa nem talál egyezést, annak ellenére, hogy kellene.
echo ffffaaa|findstr /l "ffffaaa faffaffddd"
ezt a hibát Windows Server 2003, Windows XP, Vista és Windows 7 rendszeren is megerősítették.,
a kísérletek Alapján a FINDSTR sikertelen lehet, ha a következő feltételek mindegyike teljesül:
- A keresés segítségével több szó szerinti keresési karakterláncok
- A keresési karakterláncok vagy különböző hosszúságú
- rövid keresés húr van bizonyos mennyiségű átfedés hosszabb search string
- A keresés esetben érzékeny (nem
/I
opció)
minden kudarc láttam, mindig a rövidebb keresési karakterláncok, hogy nem sikerül.
további információért lásd: miért nem talál ez a FINDSTR példa több szó szerinti keresési karakterlánccal egyezést?,
a parancssori argumentumokban szereplő idézetek és visszafordulások
Megjegyzés – A felhasználó MC ND megjegyzései tükrözik a szakasz tényleges szörnyű bonyolult szabályait. 3 különálló elemzési fázis van:
- első cmd.,exe megkövetelheti néhány idézetet kell menekülni, mint ^” (tényleg semmi köze FINDSTR)
- következő FINDSTR használja a pre 2008 MS c/c++ érv elemző, amely speciális szabályok ” és \
- miután az érv elemző befejezi, FINDSTR emellett kezeli \ majd egy alfanumerikus karakter, mint a szó, de \ majd nem alfanumerikus karakter, mint egy menekülési karakter
a fennmaradó rész nem 100% helyes. Számos helyzetben útmutatóként szolgálhat, de a fenti szabályok szükségesek a teljes megértéshez.,
Escaping idézet belül parancssori Keresési karakterláncok
Idézetek belül parancssori Keresési karakterláncok kell menekülni backslash, mint a\"
. Ez igaz mind a szó szerinti, mind a regex Keresési karakterláncokra. Ezt az információt XP, Vista és Windows 7 rendszeren is megerősítették.Megjegyzés: előfordulhat, hogy az idézetet a CMD-hez is el kell kerülni.EXE elemző, de ennek semmi köze a FINDSTR-hez., Például az asingle quote kereséséhez használhatja:
FINDSTR \^" file && echo found || echo not found
menekülés Backslash belül parancssori szó keresési karakterláncok
Backslash a szó szerinti keresési karakterlánc általában ábrázolható\
vagy mint\\
. Ezek általában egyenértékűek. (Lehet, hogy a Vista-ban szokatlan esetek vannak, ahol a hátramenetet mindig meg kell szabadítani,de nincs többé Vista gépem tesztelni).de vannak speciális esetek:
egymást követő visszalépések keresésekor az utolsót kivéve mindent le kell fedni., Az utolsó visszacsapás opcionálisan elkerülhető.
\\
kódolható:\\\
vagy\\\\
\\\
id=”\\\\\
vagy\\\\\\
egy vagy több visszalépés keresése, mielőtt egy idézet bizarr. A logic azt sugallná, hogy az idézetet meg kell szabadítani, és az összes vezető blokkot meg kell szabadítani, de ez nem működik!, Ehelyett minden vezető visszalépésnek kettősnek kell lennie,és a quoteis-nek normálisan kell elmenekülnie:
\"
\\\\\"
\\"
iv id=”\\\\\\\\\"
mint korábban megjegyeztük, egy vagy több szökött idézetek is szükség lehet menekülés
^
a cmd elemzőaz információ ebben a szakaszban megerősítették XP és a Windows 7.,
menekülő Backslash belül parancssor regex Keresési karakterláncok
Vista csak: Backslash egy regex kell vagy dupla megszökött, mint a
\\\\
, vagy pedig egyetlen megszökött belül egy karakterosztály készlet, mint aXP és Windows 7: Backslash in a regex-et mindig
– ként lehet ábrázolni. Általában
\\
– ként ábrázolható. De ez soha nem működik, ha a backslash megelőzi egy szökött idézet.,aped idézet vagy bedouble megszökött, vagy más kódolt, mint a
\"
lehet kódolt, mint a\\\\\"
vagy\"
\\"
lehet kódolt, mint a\\\\\\\\\"
vagy\"
vagy\\\"
Menekülés Idézet pedig Backslash belül /G:FÁJL szó szerinti keresési karakterláncok
Önálló idézetek visszaper jelet belül egy szó szerinti keresési szöveg fájl által meghatározott /G:fájl nem kell szökött meg, de lehet.,
"
és \"
egyenértékűek.
\
és \\
egyenértékűek.
Ha a szándék az, hogy megtalálja\\, akkor legalább a vezető backslash kell menekülni. Mindkét\\\
és\\\\
munka.
Ha a szándék az, hogy”, akkor legalább a vezető backslash kell menekülni. Mindkét\\"
és\\\"
munka.,
Escaping Quote and Backslash within /g:FILE regex search strings
Ez az egyetlen eset, amikor a menekülési szekvenciák a dokumentáció alapján a várt módon működnek. Az idézet nem regex metakarakter, ezért nem kell elmenekülni (de lehet). A Backslash egy regex metakarakter, ezért el kell menekülni.
parancssori paraméterek karakterhatárai-kiterjesztett ASCII transzformáció
A null karakter (0x00) nem jelenhet meg a parancssor bármely karakterláncában. Bármely más egyetlen bájt karakter megjelenhet a karakterláncban (0x01 – 0xFF)., A FINDSTR azonban számos kiterjesztett ASCII karaktert konvertál, amelyeket a parancssori paraméterekben talál, más karakterekké. Ennek két szempontból van jelentős hatása:
-
sok kiterjesztett ASCII karakter nem egyezik meg önmagával, ha a parancssorban Keresési karakterláncként használják. Ez a korlátozás ugyanaz a szó szerinti és regex keresések. Ha egy keresési karakterláncnak kiterjesztett ASCII-t kell tartalmaznia, akkor a
/G:FILE
opciót kell használni. -
FINDSTR nem talál fájlt, ha a név kiterjesztett ASCII karaktereket tartalmaz, a fájl neve pedig a parancssorban van megadva., Ha egy keresendő fájl kiterjesztett ASCII-t tartalmaz a névben, akkor a
/F:FILE
opciót kell használni.
itt található a kiterjesztett ASCII karaktertranszformációk teljes listája, amelyeket a FINDSTR parancssori karakterláncokon hajt végre. Minden karakter képviseli, mint a decimális bájt kód értéke. Az első kód a parancssorban megadott karaktert jelöli,a második kód pedig az átalakított karaktert. Megjegyzés – Ezt a listát egy amerikai gépen állították össze. Nem tudom, milyen hatással lehet más nyelvekre ezen a listán.,
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
bármely karakter >0 a fenti listában nem szerepel, így a <CR>
és <LF>
. A legegyszerűbb módja, hogy tartalmazza a páratlan karakterek, mint a <CR>
és <LF>
az, hogy őket egy környezeti változó, és használja késleltetett bővítése a parancssori argumentum.,
Karakterkorlátok a /G:FILE and /F:FILE options
a nul (0x00) karakter megjelenhet a fájlban, de úgy működik, mint a C string terminator. Minden karakter után nul karakter kezelik, mint egy másik karakterlánc, mintha egy másik vonalon.
a <CR>
és <LF>
a karaktereket sorvégződőként kezelik, amelyek megszakítanak egy karakterláncot, és nem szerepelnek a karakterláncban.
az összes többi egyetlen bájt karakter tökéletesen szerepel egy karakterláncban.,
Unicode fájlok keresése
A FINDSTR nem tudja megfelelően keresni a legtöbb Unicode-ot (UTF-16, UTF-16LE, UTF-16be, UTF-32), mert nem tud nul bájtot keresni, és a Unicode általában sok nul bájtot tartalmaz.
a TÍPUSPARANCS azonban az UTF-16LE-t BOM-mal egyetlen bájtos karakterkészletre konvertálja, így egy ilyen parancs az UTF-16le-vel fog működni a BOM-val.
type unicode.txt|findstr "search"
vegye figyelembe, hogy az aktív kódoldal által nem támogatott Unicode Kódpontok ?
karakterekké alakulnak.,
lehetséges az UTF-8 keresése mindaddig, amíg a keresési karakterlánc csak ASCII-t tartalmaz. A több bájtos UTF-8 karakterek konzol kimenete azonban nem lesz helyes. De ha átirányítja a kimenetet egy fájlba, akkor az eredmény helyesen lesz kódolva UTF-8. Ne feledje, hogy ha az UTF-8 fájl tartalmaz egy BOM-ot, akkor a BOM az első sor részének tekintendő, amely eldobhat egy keresést, amely megfelel a sor kezdetének.
lehetőség van több bájtos UTF-8 karakterek keresésére, ha a keresési karakterláncot UTF-8 kódolt Keresési fájlba helyezi (BOM nélkül), majd használja a /G opciót.,
a sor vége
FINDSTR minden<LF>. A <CR> jelenléte vagy hiánya nincs hatással a vonalszakadásokra.
Keresés a sortörések között
ahogy az várható volt, a .
regex metacharacter nem egyezik <CR> vagy <LF>. De lehetőség van egy sortörésen keresztül keresni egy parancssori keresési karakterlánc segítségével., A<CR> és<LF> karaktereknek kifejezetten össze kell illeszkedniük. Ha többsoros egyezést talál, csak a mérkőzés 1. sora kerül kinyomtatásra. FINDSTR ezután megduplázza vissza a forrás 2. sorába, majd újra elkezdi a keresést-egyfajta “előretekintés” típusú funkció.
tételezze fel a szöveget.,TXT-nek ezek a tartalmak (lehet Unix vagy Windows stílus)
AAABAA
Akkor ez a script
ad ezek az eredmények
1:A2:A5:A
Keresés át sortörések elemet a /G:FÁJL opció pontatlan, mert az egyetlen módja, hogy megfeleljen <CR> vagy <HA> keresztül egy regex karakterosztály tartomány kifejezés, hogy a szendvicset az EOL karaktereket.,
-
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.,
A válasz az alábbi 2. részben folytatódott…