1.字符串查找:find
2.字符串查找加強:findstr正則表達式
一.字符串查找:findide
在文件中搜索字符串。
FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] "string" [[drive:][path]filename[ ...]]字符串
/V 顯示全部未包含指定字符串的行。
/C 僅顯示包含字符串的行數。
/N 顯示行號。
/I 搜索字符串時忽略大小寫。
/OFF[LINE] 不要跳過具備脫機屬性集的文件。
"string" 指定要搜索的文字串,
[drive:][path]filename 指定要搜索的文件。string
基本格式:find "要查找的字符串" 要查找的文件(不在當前目錄則須要給出完整路徑)it
例1
find "abc" d:\abc.txt
在abc.txt中查找字符串abc的行。class
/I 搜索字符串時忽略大小寫。test
例2
find /i "abc" d:\abc.txt
參數/i表明的是「Ignore」(忽略),也就是忽略大小寫。經過/I 參數能夠不區分要查找的字符串「abc」的大小寫。jdk
/N 顯示行號。file
例3
find /n "abc" d:\abc.txt
參數/n表明英語單詞「Number」(號碼).。經過/n參數咱們能夠查找到字符串"abc"所在的行號。搜索
/C 僅顯示包含字符串的行數。
例4
find /c "abc" d:\abc.txt
參數/c是英語單詞「Count」(計數)的縮寫。經過/c參數咱們能夠統計包含"abc"字符串的行數。
/V 顯示全部未包含指定字符串的行。
例5
find /v "abc" d:\abc.txt
這個參數用於找出文件中不包含指定字符串的行。在這裏表示查找不包含"abc"字符串的行。
注意:find命令中要查找的字符串一字要用雙引號" "括起來。
二.字符串查找加強: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 在一行的開始配對模式。
/E 在一行的結尾配對模式。
/L 按字使用搜索字符串。
/R 將搜索字符串做爲通常表達式使用。
/S 在當前目錄和全部子目錄中搜索
匹配文件。
/I 指定搜索不分大小寫。
/X 打印徹底匹配的行。
/V 只打印不包含匹配的行。
/N 在匹配的每行前打印行數。
/M 若是文件含有匹配項,只打印其文件名。
/O 在每一個匹配行前打印字符偏移量。
/P 忽略有不可打印字符的文件。
/OFF[LINE] 不跳過帶有脫機屬性集的文件。
/A:attr 指定有十六進位數字的顏色屬性。請見 "color /?"
/F:file 從指定文件讀文件列表 (/ 表明控制檯)。
/C:string 使用指定字符串做爲文字搜索字符串。
/G:file 從指定的文件得到搜索字符串。 (/ 表明控制檯)。
/D:dir 查找以分號爲分隔符的目錄列表
strings 要查找的文字。
[drive:][path]filename 指定要查找的文件。
除非參數有 /C 前綴,請使用空格隔開搜索字符串。
例如: '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 是要查找的內容。
[rive:][path]filename 指定要查找的文件,路徑可缺省,缺省狀況下爲當前目錄。
例1
findstr "icq" 123.txt
在123.txt中查找包含有「icq」這三個字符串的行。
/I 指定搜索不分大小寫。
例2
findstr /i "MSN" 123.txt
在123.txt中查找包含有「MSN」這三個字符的行,且不區分大小寫。
★/R 將搜索字符串做爲正則表達式使用。參數/R 強調以正則表達式規則來解讀字符串。R - Right 右即爲正。咱們
都說右手是正手,所以引伸爲右爲正,左爲反。
例3
findstr /r "icq msn" 123.txt
在123.txt中查找包含有 「icq」或「msn」的行,查找的多個字符串間用空格隔格開。
/S 在當前目錄和全部子目錄中搜索。
例4
findstr /s /i "MSN" *.txt
在當前目錄和全部子目錄中的txt文件中搜索字符串"MSN"(不區分字母大小寫)。
/C:string 使用指定字符串做爲文字搜索字符串。
例5
findstr /c:"icq msn" 123.txt
在123.txt中查找包含有 「icq msn」這幾個字符的行。注意,這裏「icq msn」是一總體的。
此參數多用於查找含有空格的字符串。
★在使用 findstr "我 你 他" test.txt 的時候,並不能查找到內容,可是,加上開關 /i 或者 /r 以後就正確無誤
了,多是在查找多個純中文字符串的時候的一個bug吧;單個的純中文字符串沒有任何問題。
2.findstr 命令中正則表達式的用法規則
通常表達式的快速參考:
. 通配符: 任何字符
● 通配符和重複符規則,即 . 和
通配符,即一個句點,表明任何一個字符,並且只能是一個,包括字母、數字、半角符號還有空格。
重複符,即型號 表明前面字母的出現次數(出現次數從0到屢次,0表示沒有)。
findstr . 123.txt 或 findstr "." 123.txt
在文件123.txt中查找任意字符,不包括空行。
例6
findstr . 2.txt 或 findstr "." 2.txt
在文件123.txt中查找任意字符,包括空行。
例7
findstr ac* 123.txt
在文件123.txt中查找出現一個「a」字符串,以及a後面出現過0次或者任意次c的字符行。
如:
a
ac
acc
addc
等都匹配。
例8
findstr ak5* 123.txt
在文件123.txt中查找出現一個「ak」字符串,以及ak後面出現過0次或者任意次5的字符行。如:
ak
ak5
akbbb
ak125
ak555
等都匹配。
●行首、行尾符規則,即 ^ 和 $
例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獨自一行。
● 字符集規則,即[class]
①表示含有集裏的任意一個字符的即匹配。
②該字符集裏的元素能夠是字母和數字和通常的半角字符,如:}{ ,.][等,但雙引號"不被識別。不能是漢字, 漢字
不被正確解釋(漢字不是ASCII碼)。
若是在字符集內插入通配符和重複符號,即"[.]"將會把. 和 視爲普通字符,沒有通配和重複的含義。
例12
findstr "[0-9]" 123.txt
在文件123.txt中查找數字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中查找小寫字符a到f 或l到z的任意一字母的行,但不包含g h I j k這幾個字母。
例16
findstr "M[abc][123]Y" 2.txt
在文件123.txt中查找能夠匹配 Ma1Y , Mb1Y, Mc1Y; Ma2Y , Mb2Y, Mc2Y; Ma3Y , Mb3Y, Mc3Y的行。
● 減法規則,即[^class]
例17
findstr "[^0-9]" 123.txt
若是是純數字的行便過濾掉,例如2323423423 這樣的字符串被過濾,345hh888這樣的形式則過濾不了。
注意,純數字的行不能有空格,不論行首行尾或者是行中都不能有空格,不然過濾失敗!
例18
findstr "[^a-z]" 123.txt
若是是純字母的行便過濾掉,例如 sdlfjlkjlksjdklfjlskdf 這樣的字符將被過濾,若是是sdfksjdkf99999這樣的形
式則過濾不了。
注意,純字母的行不能有空格,不論行首行尾或者是行中都不能有空格,不然過濾失敗!
例19
findstr "[^add]" 123.txt
過濾僅含有由a d d三個字母組成的純字母字符串的行。
如:
a
ad
ddaadd
dd
這些行都會被過濾。
注意,僅含有由a d d三個字母組成的純字母字符串的行不能有空格,不論行首行尾或者是行中都不能有空格,不然
過濾失敗!
例20
findstr "[^echo]" 123.txt
過濾僅含有由e c h o 四個字母組成的純字母字符串的行。
如:
e
c
ec
cho
chooo
這些行都會被過濾。
●單詞前綴後綴定位規則,即\<xyz和xyz\>
該xyz能夠是英文單詞或數字,但不適用於漢字。符號 \ 理解爲轉義符,化解小於號和大於號的重定向命令含義。
該規則是匹配相似單個英文單詞的。
例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
這裏是用來精確查找單詞。查找單詞end的行,
注意:
ended
cdkend
bcd-end-jjkk
這類詞都不匹配。
(思考:爲何end echo和end也匹配?由於\<xyz\>格式要查找的是單個英文單詞。)
● 轉義符 \
把表達式中的特殊字符(元字符)轉化爲普通字符。常見寫法:
.
*
\
??
-
例24
findstr ".abc" 123.txt
在文件123.txt中查找能夠匹配「.abc」字符串的行,這裏\。是把。給轉義了。
例25
findstr "1\" 123.txt 或findstr "1\\" 123.txt
在文件123.txt中查找能夠匹配「1\」字符串的行,這裏\是把\給轉義了。
★要查找的字符串含有\時,能夠用\把\給轉義;或者把\變成\\。若是目標字符串的\後面還有內容,則搜索字符串\除了要變成\(自己的轉義要求),還能夠在它後面再加一個字符,如\.