1.4 學(xué)習(xí) find findstr 命令
學(xué)習(xí)要點(diǎn):
1.字符串查找:find
2.字符串查找增強(qiáng):findstr
一.字符串查找:find
在文件中搜索字符串。
FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] "string" [[drive:][path]filename[ ...]]
/V 顯示所有未包含指定字符串的行。
/C 僅顯示包含字符串的行數(shù)。
/N 顯示行號(hào)。
/I 搜索字符串時(shí)忽略大小寫(xiě)。
/OFF[LINE] 不要跳過(guò)具有脫機(jī)屬性集的文件。
"string" 指定要搜索的文字串,
[drive:][path]filename 指定要搜索的文件。
基本格式:find "要查找的字符串" 要查找的文件(不在當(dāng)前目錄則需要給出完整路徑)
例1
find "abc" d:\abc.txt
在abc.txt中查找字符串a(chǎn)bc的行。
/I 搜索字符串時(shí)忽略大小寫(xiě)。
例2
find /i "abc" d:\abc.txt
參數(shù)/i代表的是“Ignore”(忽略),也就是忽略大小寫(xiě)。通過(guò)/I 參數(shù)可以不區(qū)分要查找的字符串“abc”的大小寫(xiě)。
/N 顯示行號(hào)。
例3
find /n "abc" d:\abc.txt
參數(shù)/n代表英語(yǔ)單詞“Number”(號(hào)碼).。通過(guò)/n參數(shù)我們可以查找到字符串"abc"所在的行號(hào)。
/C 僅顯示包含字符串的行數(shù)。
例4
find /c "abc" d:\abc.txt
參數(shù)/c是英語(yǔ)單詞“Count”(計(jì)數(shù))的縮寫(xiě)。通過(guò)/c參數(shù)我們可以統(tǒng)計(jì)包含"abc"字符串的行數(shù)。
/V 顯示所有未包含指定字符串的行。
例5
find /v "abc" d:\abc.txt
這個(gè)參數(shù)用于找出文件中不包含指定字符串的行。在這里表示查找不包含"abc"字符串的行。
注意:find命令中要查找的字符串一字要用雙引號(hào)" "括起來(lái)。
二.字符串查找增強(qiáng):findstr
在文件中尋找字符串。
FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/F:file]
[/C:string] [/G:file] [/D:dir list] [/A:color attributes] [/OFF[LINE]]
strings [[drive:][path]filename[ ...]]
/B 在一行的開(kāi)始配對(duì)模式。
/E 在一行的結(jié)尾配對(duì)模式。
/L 按字使用搜索字符串。
/R 將搜索字符串作為一般表達(dá)式使用。
/S 在當(dāng)前目錄和所有子目錄中搜索
匹配文件。
/I 指定搜索不分大小寫(xiě)。
/X 打印完全匹配的行。
/V 只打印不包含匹配的行。
/N 在匹配的每行前打印行數(shù)。
/M 如果文件含有匹配項(xiàng),只打印其文件名。
/O 在每個(gè)匹配行前打印字符偏移量。
/P 忽略有不可打印字符的文件。
/OFF[LINE] 不跳過(guò)帶有脫機(jī)屬性集的文件。
/A:attr 指定有十六進(jìn)位數(shù)字的顏色屬性。請(qǐng)見(jiàn) "color /?"
/F:file 從指定文件讀文件列表 (/ 代表控制臺(tái))。
/C:string 使用指定字符串作為文字搜索字符串。
/G:file 從指定的文件獲得搜索字符串。 (/ 代表控制臺(tái))。
/D:dir 查找以分號(hào)為分隔符的目錄列表
strings 要查找的文字。
[drive:][path]filename 指定要查找的文件。
除非參數(shù)有 /C 前綴,請(qǐng)使用空格隔開(kāi)搜索字符串。
例如: 'FINDSTR "hello there" x.y' 在文件 x.y 中尋找 "hello" 或
"there" 。 'FINDSTR /C:"hello there" x.y' 在文件 x.y 尋找 "hello there"。
1.基本格式:findstr " strings " [drive:][path]filename
Strings 是要查找的內(nèi)容。
[rive:][path]filename 指定要查找的文件,路徑可缺省,缺省情況下為當(dāng)前目錄。
例1
findstr "icq" 123.txt
在123.txt中查找包含有“icq”這三個(gè)字符串的行。
/I 指定搜索不分大小寫(xiě)。
例2
findstr /i "MSN" 123.txt
在123.txt中查找包含有“MSN”這三個(gè)字符的行,且不區(qū)分大小寫(xiě)。
★/R 將搜索字符串作為正則表達(dá)式使用。參數(shù)/R 強(qiáng)調(diào)以正則表達(dá)式規(guī)則來(lái)解讀字符串。R - Right 右即為正。我們
都說(shuō)右手是正手,因此引申為右為正,左為反。
例3
findstr /r "icq msn" 123.txt
在123.txt中查找包含有 “icq”或“msn”的行,查找的多個(gè)字符串間用空格隔格開(kāi)。
/S 在當(dāng)前目錄和所有子目錄中搜索。
例4
findstr /s /i "MSN" *.txt
在當(dāng)前目錄和所有子目錄中的txt文件中搜索字符串"MSN"(不區(qū)分字母大小寫(xiě))。
/C:string 使用指定字符串作為文字搜索字符串。
例5
findstr /c:"icq msn" 123.txt
在123.txt中查找包含有 “icq msn”這幾個(gè)字符的行。注意,這里“icq msn”是一整體的。
此參數(shù)多用于查找含有空格的字符串。
★在使用 findstr "我 你 他" test.txt 的時(shí)候,并不能查找到內(nèi)容,但是,加上開(kāi)關(guān) /i 或者 /r 之后就正確無(wú)誤
了,可能是在查找多個(gè)純中文字符串的時(shí)候的一個(gè)bug吧;單個(gè)的純中文字符串沒(méi)有任何問(wèn)題。
2.findstr 命令中正則表達(dá)式的用法規(guī)則
一般表達(dá)式的快速參考:
. 通配符: 任何字符
* 重復(fù): 以前字符或類(lèi)別出現(xiàn)零或零以上次數(shù)
^ 行位置: 行的開(kāi)始
$ 行位置: 行的終點(diǎn)
[class] 字符類(lèi)別: 任何在字符集中的字符
[^class] 補(bǔ)字符類(lèi)別: 任何不在字符集中的字符
[x-y] 范圍: 在指定范圍內(nèi)的任何字符
\x Escape: 元字符 x 的文字用法
\xyz 字位置: 字的開(kāi)始
xyz\&; 字位置: 字的結(jié)束
● 通配符和重復(fù)符規(guī)則,即 . 和 *
通配符,即一個(gè)句點(diǎn),代表任何一個(gè)字符,而且只能是一個(gè),包括字母、數(shù)字、半角符號(hào)還有空格。
重復(fù)符,即型號(hào)* 代表前面字母的出現(xiàn)次數(shù)(出現(xiàn)次數(shù)從0到多次,0表示沒(méi)有)。
findstr . 123.txt 或 findstr "." 123.txt
在文件123.txt中查找任意字符,不包括空行。
例6
findstr .* 2.txt 或 findstr ".*" 2.txt
在文件123.txt中查找任意字符,包括空行。
例7
findstr ac* 123.txt
在文件123.txt中查找出現(xiàn)一個(gè)“a”字符串,以及a后面出現(xiàn)過(guò)0次或者任意次c的字符行。
如:
a
ac
acc
addc
等都匹配。
例8
findstr ak5* 123.txt
在文件123.txt中查找出現(xiàn)一個(gè)“ak”字符串,以及ak后面出現(xiàn)過(guò)0次或者任意次5的字符行。如:
ak
ak5
akbbb
ak125
ak555
等都匹配。
●行首、行尾符規(guī)則,即 ^ 和 $
例9
findstr "^step" 123.txt
在文件123.txt中查找行首為step字符串的行。
如:
stepkdka
step 456
這兩行都匹配的。
例10
findstr "step$" 123.txt
在文件123.txt中查找行尾為step字符串的行。
如:
123 dstep
123step
這兩行也匹配的。
例11
findstr "^step$" 123.txt
在文件123.txt中查找行首為step,且行尾也為step的行,即step獨(dú)自一行。
● 字符集規(guī)則,即[class]
①表示含有集里的任意一個(gè)字符的即匹配。
②該字符集里的元素可以是字母和數(shù)字和一般的半角字符,如:}{ ,.][等,但雙引號(hào)"不被識(shí)別。不能是漢字, 漢字
不被正確解釋?zhuān)h字不是ASCII碼)。
如果在字符集內(nèi)插入通配符和重復(fù)符號(hào),即"[.*]"將會(huì)把. 和 *視為普通字符,沒(méi)有通配和重復(fù)的含義。
例12
findstr "[0-9]" 123.txt
在文件123.txt中查找數(shù)字0-9的任意之一的行。
如:
4kkb
1 lkka cc
這兩行都匹配。
例13
findstr "[a-zA-Z]" 123.txt
在文件123.txt中查找包括任意字母行。
例14
findstr "[abcezy]" 2.txt
在文件123.txt中查找包括a b c e z y其中任意一字母的行。
例15
findstr "[a-fl-z]" 2.txt
在文件123.txt中查找小寫(xiě)字符a到f 或l到z的任意一字母的行,但不包含g h I j k這幾個(gè)字母。
例16
findstr "M[abc][123]Y" 2.txt
在文件123.txt中查找可以匹配 Ma1Y , Mb1Y, Mc1Y; Ma2Y , Mb2Y, Mc2Y; Ma3Y , Mb3Y, Mc3Y的行。
● 減法規(guī)則,即[^class]
例17
findstr "[^0-9]" 123.txt
如果是純數(shù)字的行便過(guò)濾掉,例如2323423423 這樣的字符串被過(guò)濾,345hh888這樣的形式則過(guò)濾不了。
注意,純數(shù)字的行不能有空格,不論行首行尾或者是行中都不能有空格,否則過(guò)濾失??!
例18
findstr "[^a-z]" 123.txt
如果是純字母的行便過(guò)濾掉,例如 sdlfjlkjlksjdklfjlskdf 這樣的字符將被過(guò)濾,如果是sdfksjdkf99999這樣的形
式則過(guò)濾不了。
注意,純字母的行不能有空格,不論行首行尾或者是行中都不能有空格,否則過(guò)濾失??!
例19
findstr "[^add]" 123.txt
過(guò)濾僅含有由a d d三個(gè)字母組成的純字母字符串的行。
如:
a
ad
ddaadd
dd
這些行都會(huì)被過(guò)濾。
注意,僅含有由a d d三個(gè)字母組成的純字母字符串的行不能有空格,不論行首行尾或者是行中都不能有空格,否則
過(guò)濾失?。?/p>
例20
findstr "[^echo]" 123.txt
過(guò)濾僅含有由e c h o 四個(gè)字母組成的純字母字符串的行。
如:
e
c
ec
cho
chooo
這些行都會(huì)被過(guò)濾。
●單詞前綴后綴定位規(guī)則,即\xyz和xyz\&;
該xyz可以是英文單詞或數(shù)字,但不適用于漢字。符號(hào) \ 理解為轉(zhuǎn)義符,化解小于號(hào)和大于號(hào)的重定向命令含義。
該規(guī)則是匹配類(lèi)似單個(gè)英文單詞的。
例21
findstr "\echo" 123.txt
所有含有以echo為前綴的字符串的行,都匹配。
如:
echo:kkk a add
jjkk echo
這兩行都匹配。
(思考:為什么:echo也匹配?)
例22
findstr "echo\&;" 123.txt
所有含有以echo為后綴的字符串的行,都匹配。
如:
qq bbecho 這一行也匹配。
(思考:為什么kkkk echo:也匹配?)
例23
findstr "\end\&;123.txt
這里是用來(lái)精確查找單詞。查找單詞end的行,
注意:
ended
cdkend
bcd-end-jjkk
這類(lèi)詞都不匹配。
(思考:為什么end echo和end也匹配?因?yàn)閈xyz\&;格式要查找的是單個(gè)英文單詞。)
● 轉(zhuǎn)義符 \
把表達(dá)式中的特殊字符(元字符)轉(zhuǎn)化為普通字符。常見(jiàn)寫(xiě)法:
\.
\*
\\
\[
\]??
\-
例24
findstr "\.abc" 123.txt
在文件123.txt中查找可以匹配“.abc”字符串的行,這里\。是把。給轉(zhuǎn)義了。
例25
findstr "1\\" 123.txt 或findstr "1\\\\" 123.txt
在文件123.txt中查找可以匹配“1\”字符串的行,這里\\是把\給轉(zhuǎn)義了。
★要查找的字符串含有\(zhòng)時(shí),可以用\\把\給轉(zhuǎn)義;或者把\變成\\\\。如果目標(biāo)字符串的\后面還有內(nèi)容,則搜索字符
串\除了要變成\\(本身的轉(zhuǎn)義要求),還可以在它后面再加一個(gè)字符,如\\.
您可能感興趣的文章:- 使用批處理實(shí)現(xiàn)啟動(dòng)和停止服務(wù)的代碼分析(net startnet stop)
- 全盤(pán)刪除所有文件夾下的_desktop.ini的批處理bat文件
- 一鍵清除_desktop.ini文件的批處理文件
- 利用bat批處理程序通過(guò)DOS命令行刪除所有的空文件夾的方法
- bat命令批處理判斷32位還是64位系統(tǒng)的多種方法
- bat 批處理 for 命令快速入門(mén)
- 批處理入門(mén)手冊(cè)之批處理常用DOS命令篇(md、rd、ren、move)
- 批處理入門(mén)手冊(cè)之批處理常用DOS命令篇(attrib、del、copy、xcopy)
- 批處理入門(mén)手冊(cè)之批處理常用DOS命令篇(echo、rem、cd、dir)
- DOS 批處理命令For循環(huán)命令詳解
- 終極dos批處理for循環(huán)命令詳解
- Windows命令行bat批處理延遲sleep方法(批處理延時(shí))
- 批處理模式下運(yùn)行 top 命令的方法