findstr 命令使用

findstr 命令使用

 

find /?
在文件中搜索字符串。

FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] "string" [[drive:][path]filename[ ...]]

  /V         顯示全部未包含指定字符串的行。
  /C         僅顯示包含字符串的行數。
  /N         顯示行號。
  /I         搜索字符串時忽略大小寫。
  /OFF[LINE] 不要跳過具備脫機屬性集的文件。
  "string" 指定要搜索的文本字符串。
  [drive:][path]filename
             指定要搜索的文件。

若是沒有指定路徑,FIND 將搜索在提示符處鍵入
的文本或者由另外一命令產生的文本。

 

findstr /?
在文件中尋找字符串。

FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/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"。

通常表達式的快速參考:
  .        通配符: 任何字符
  *        重複: 之前字符或類出現零或零以上次數
  ^        行位置: 行的開始
  $        行位置: 行的終點
  [class]  字符類: 任何在字符集中的字符
  [^class] 補字符類: 任何不在字符集中的字符
  [x-y]    範圍: 在指定範圍內的任何字符
  \x       Escape: 元字符 x 的文字用法
  \<xyz    字位置: 字的開始
  xyz\>    字位置: 字的結束

有關 FINDSTR 常見表達法的詳細狀況,請見聯機命令參考。

 

示例:html

 

使用空格分隔多個搜索字符串,除非參數以 /c 爲前綴。要在文件 x.y 中搜索「hello」或「there」,請鍵入:正則表達式

findstr "hello there" x.ywindows

 

要在文件 x.y 中搜索「hello there」,請鍵入:網絡

findstr /c:"hello there" x.yspa

 

若要查找文件 Proposal.txt 中出現的全部單詞「Windows」(首字母 W 大寫),請鍵入:code

findstr Windows proposal.txtserver

 

若要搜索包含單詞 Windows 的當前目錄和全部子目錄中的每一個文件(不考慮字母大小寫),請鍵入:htm

findstr /s /i Windows *.*blog

 

要查找包含字「FOR」的全部行(前面可有任意空格,如:計算機程序中的循環),幷包括每次出現的行號,請鍵入:文檔

findstr /b /n /c:"*FOR" *.bas

 

如 果要在相同組文件中搜索幾個不一樣項目,請在新行上建立包含每一個搜索標準的文本文件。也能夠列出要在文本文件中搜索的確切文件。要使用文件 Finddata.txt 中的搜索標準來搜索 Filelist.txt 中列出的文件,而後將結果保存到文件 Results.out 中,請鍵入:

findstr /g:finddata.txt /f:filelist.txt > results.out

 

假設您想要查找當前目錄和全部子目錄中包含單詞「computer」的每一個文件,而不考慮字母的大小寫。若要列出包含單詞「computer」的全部文件,請鍵入:

findstr /s /i /m "/" *.*

 

如今假定不只須要查找單詞「computer」,並且須要查找以字母「comp」開頭的全部其餘單詞,例如「compliment」和「compete」。請鍵入:

findstr /s /i /m "/

 

http://www.microsoft.com/technet/prodtechnol/windowsserver2003/zh-chs/library/ServerHelp/2b01d7f5-ab5a-407f-b5ec-f46248289db9.mspx?mfr=true

 

 

實例:

 

1.findstr . 2.txt 或 findstr "." 2.txt  

從文件2.txt中查找任意字符,不包括空字符或空行

====================

 

2.findstr .* 2.txt 或 findstr ".*" 2.txt

從文件2.txt中查找任意字符包括空行和空字符

====================

 

3.findstr "[0-9]" 2.txt

從文件2.txt中查找包括數字0-9的字符串或行

====================

 

4.findstr "[a-zA-Z]" 2.txt

從文件2.txt中查找包括任意字符的字符串或行

====================

 

5.findstr "[abcezy]" 2.txt

從文件2.txt中查找包括a b c e z y字母的字符串或行

====================

 

6.findstr "[a-fl-z]" 2.txt

從文件2.txt中查找小寫字符a-f l-z的字符串,但不包含g h I j k這幾個字母。

====================

 

7.findstr "M[abc][hig]Y" 2.txt

從文件2.txt中能夠匹配 MahY , MbiY, MahY等…..

====================

 

8. ^和$符號的應用

^ 表示行首,"^step"僅匹配 "step hello world"中的第一個單詞

$ 表示行尾,"step$"僅匹配 "hello world step"中最後一個單詞

====================

 

9.finstr "[^0-9]" 2.txt

若是是純數字的字符串或者行便過濾掉,例如2323423423 這樣的字符串,若是是345hh888這樣的形式就不成了。

====================

 

10.findstr "[^a-z]" 2.txt

同上,若是是純字母的字符串或者行便過濾掉,例如 sdlfjlkjlksjdklfjlskdf這樣的字符,若是是sdfksjdkf99999這樣的形式,摻雜着數字就不成了

====================

 

11.*號的做用

前面已經說過了 ".*"表示搜索的條件是任意字符,*號在正則表達式中的做用不是任何字符,而是表示左側字符或者表達式的重複次數,*號表示重複的次數爲零次或者屢次。

====================

 

12.findstr "^[0-9]*$" 2.txt

這個是匹配找到的純數字,例如 234234234234,若是是2133234kkjl234就被過濾掉了。

   Findstr "^[a-z]*$" 2.txt

這個是匹配找到的純字母,例如 sdfsdfsdfsdf,若是是213sldjfkljsdlk就被過濾掉了

如 果在搜索條件裏沒有*號,也就是說不重複左側的搜索條件,也就是[0-9] [a-z]那隻能匹配字符串的第一個字符也只有這一個字符,由於有行首和行尾的限制,"^[0-9]$"第一個字符若是是數字就匹配,若是不是就過濾掉, 若是字符串是 9 就匹配,若是是98或者9j之類的就不能夠了。

=====================

 

13. "/<…/>"這個表達式的做用

這個表示精確查找一個字符串,/<sss 表示字的開始位置,sss/>表示字的結束位置

echo hello world computer|findstr "/<computer/>"這樣的形式

echo hello worldcomputer|findstr "/<computer/>" 這樣的形式就不成了,他要找的是 "computer"這個字符串,因此不能夠。

echo hello worldcomputer|findstr ".*computer/>"這樣就能夠匹配了

=====================

 

============================================= End

 

 

 

 

 

 

 

 

 

 

find 做用:從文件中收索字符串

格式:find 參數 "字符串" 路徑\文件名

參數: /V 顯示全部未包含指定字符串的行。

/C 僅顯示包含字符串的行數。

/N 顯示行號。

/I 搜索字符串時忽略大小寫。

/OFF[LINE] 不要跳過具備脫機屬性集的文件。

當文件中包含要查找的字符串時,將返回這個字符串所在位置的整行內容。默認狀況下是區分大小寫的,若想要

不區分大小寫就是用參數 /i 有時候,咱們的需求並非爲了查找到某個字符串,而是要檢測哪些行不含有特定的

字符串,這個時候,可使用開關/v,用法爲:find /v "Abc" test.txt,它表示查找那些不含字符串Abc的行(Abc要

區分大小寫),若是不區分abc的大小寫,那麼,應該寫成 find /i /v "Abc" test.txt。還有一點是find 支持查找通配

符文件。如 find "1" *.txt。

findstr 是find的擴展,功能更強大

格式:findstr 參數 字符串 路徑\文件名

參數: /B 在一行的開始配對模式。 (就是指以字符串開頭,begin 這樣就方便了記憶)

/E 在一行的結尾配對模式。(就是指以字符串結尾,end 這樣就方便記憶)

/L 按字使用搜索字符串。就是將後面的""裏的當成一個字符

/R 將搜索字符串做爲通常表達式使用。

/S 在當前目錄和全部子目錄中搜索匹配文件。

/I 指定搜索不分大小寫。(英文:ignore 忽略)

/X 打印徹底匹配的行。/x 是指徹底匹配,就是說整行匹配,而不是含有關鍵字.

/V 只打印不包含匹配的行。(就是找出不包含字符串的)

/N 在匹配的每行前打印行數。(就是在輸出行的前面加上原文件中的行數,英文:number)

顯示的結果中冒號(:)是英文格式下的,在用for提取的時候須要注意!

/M 若是文件含有匹配項,只打印其文件名。(指定文件中輸出含有字符串的文件名)

/O 在每一個匹配行前打印字符偏移量。o開關的做用是告訴你每行第一個字符前的位置是該文件中的第幾個字節

計算時別忘了文本中不可見的回車符合換行符將佔兩字節(某些文本中只佔一字節)。還有空格鍵一個字符。

確定聽不懂。看例子:1.txt文件內容: 就三行三個c沒有空格。輸入:findstr /o c 1.txt 結果是:

c 0:c

c 3:c

c 6:c

怎麼計算:第一行的c前沒有字符因此是0.第二行的c前一行只有一個c算一個字符因爲是第二行因此算一個回車

2個字符就是:1+2=3同理第三個c前有2個字符和2個回車:1*2+2*2=6.。

/P 忽略有不可打印字符的文件。(我不清楚,我的沒法解釋)

/C:string 使用指定字符串做爲文字搜索字符串。

如:findstr /c:"a b" 1.txt 就會找出含"a b"的行並輸出來(注意a和b中間有空格)

若是不用參數/c:findstr "a b" 1.txt 就會輸出含有字母 a 或 b 的行。

/G:file 從指定的文件得到搜索字符串。 (/ 表明控制檯)。

如:findstr /g:2.txt 1.txt 就是把1.txt中含有2.txt中任一行內容的行輸出來。

上面的有點像:@echo off

for /f "delims=" %%a in ('type 2.txt') do (

findstr "%%a" 1.txt

echo.)

pause

(以上是本身試出來的,不保證正確)

/A:attr 指定有十六進位數字的顏色屬性。請見 "color /?"(使用這個能夠在dos上面搞出不一樣顏色的字,本身想一想)

/F:file 從指定文件讀文件列表 (/ 表明控制檯)。

/D:dir 查找以分號爲分隔符的目錄列表

/OFF[LINE] 不跳過帶有脫機屬性集的文件。

除非參數有 /C 前綴,請使用空格隔開搜索字符串。

例如: FINDSTR "hello there" x.y 在文件 x.y 中尋找 "hello"或"there" 。 FINDSTR /C:"hello there" x.y 文

件 x.y 尋找"hello there"。

通常表達式的快速參考:

. 通配符: 任何字符

* 重複: 之前字符或類別出現零或零以上次數

^ 行位置: 行的開始

$ 行位置: 行的終點

[class] 字符類別: 任何在字符集中的字符

[^class] 補字符類別: 任何不在字符集中的字符

[x-y] 範圍: 在指定範圍內的任何字符

\x Escape: 元字符 x 的文字用法

\<xyz 字位置: 字的開始

xyz\> 字位置: 字的結束

<和\>是單詞錨定 ^是行首 $是行尾

注意的是:別把^,$和\<,\>弄混了一個是行一個是字。行開始與結束沒什麼好說的。而字的開始和結束就不同了,例如:

1.txt裏兩行爲"abcd" 和 "abcd e"用命令findstr "cd\>" 1.txt 兩行都會出現,只要是連在一塊兒(沒被空格開)的

並以cd結尾的(不 要求是行尾)都知足。至關於文本中出現英語中以cd結尾的的單詞了的行都會輸出來。

 

舉一些例子(來自網絡):

1.findstr . 2.txt 或 findstr "." 2.txt 2.findstr .* 2.txt 或 findstr ".*" 2.txt

從文件2.txt中查找任意字符,不包括空字符或空行 從文件2.txt中查找任意字符包括空行和空字符

==================== ====================

3.findstr "[0-9]" 2.txt 4.findstr "[a-zA-Z]" 2.txt

從文件2.txt中查找包括數字0-9的字符串或行 從文件2.txt中查找包括任意字符的字符串或行

==================== ====================

5.findstr "[abcezy]" 2.txt 6.findstr "[a-fl-z]" 2.txt

從文件2.txt中查找包括a b c e z y字母的字符串或行 從文件2.txt中查找小寫字符a-f l-z的字符串,但不包含g h I j k這幾個字母。

==================== ====================

7.findstr "M[abc][hig]Y" 2.txt 8. ^和$符號的應用

從文件2.txt中能夠匹配 MahY , MbiY, MahY等….. ^ 表示行首,"^step"僅匹配 "step hello world"中的第一個單詞

$ 表示行尾,"step$"僅匹配 "hello world step"中最後一個單詞

==================== ====================

9.finstr "[^0-9]" 2.txt

若是是純數字的字符串或者行便過濾掉,例如2323423423 這樣的字符串,若是是345hh888這樣的形式就不成了。

====================

10.findstr "[^a-z]" 2.txt

同上,若是是純字母的字符串或者行便過濾掉,例如 sdlfjlkjlksjdklfjlskdf這樣的字符,若是是sdfksjdkf99999這樣的形式,摻雜着數字就不成了

====================

11.*號的做用

前面已經說過了 ".*"表示搜索的條件是任意字符,*號在正則表達式中的做用不是任何字符,而是表示左側字符或者表達式的重複次數,*號表示重複的次數爲零次或者屢次。

====================

12.findstr "^[0-9]*$" 2.txt

這個是匹配找到的純數字,例如 234234234234,若是是2133234kkjl234就被過濾掉了。

Findstr "^[a-z]*$" 2.txt

這個是匹配找到的純字母,例如 sdfsdfsdfsdf,若是是213sldjfkljsdlk就被過濾掉了

如 果在搜索條件裏沒有*號,也就是說不重複左側的搜索條件,也就是[0-9] [a-z]那隻能匹配字符串的第一個字符也只有這一個字符,由於有行首和行尾的限制,"^[0-9]$"第一個字符若是是數字就匹配,若是不是就過濾掉, 若是字符串是 9 就匹配,若是是98或者9j之類的就不能夠了。

=====================

13. "\<…\>"這個表達式的做用

這個表示精確查找一個字符串,\<sss 表示字的開始位置,sss\>表示字的結束位置

echo hello world computer|findstr "\<computer\>"這樣的形式

echo hello worldcomputer|findstr "\<computer\>" 這樣的形式就不成了,他要找的是 "computer"這個字符串,因此不能夠。

echo hello worldcomputer|findstr ".*computer\>"這樣就能夠匹配了

14.吧1.txt文檔中超過10個字符的行輸出到2.txt

@findstr .......... 1.txt>2.txt

感受好像2.txt裏是少於10個字符的行,但是實際倒是超過10個字符的行,包括10個字符。

以上內容轉自:http://hi.baidu.com/bs0%D0%A1%B3%C2/blog/item/3f9c39ee0d29c0cbd439c94a.html

find比findstr更強的地方:

 一、統計含指定字符串的總行數。find /c "abc" test.txt能夠統計test.txt中含有字符串abc的總行數,而findstr則沒有直接提供該功能,須要配合for語句才能實現;

  二、find能夠讀取Unicode格式的文本,而findstr則不行;

  三、find能夠過濾某些特殊字符,而findstr則不行,好比,咱們在使用fsutil fsinfo drives語句查詢磁盤分區的時候,若是想讓盤符分行顯示而不是顯示在同一行上的時候(這在用for語句提取盤符的時候頗有用),find能夠大顯身手,而findstr只能乾瞪眼了,具體語句爲: 代碼: fsutil fsinfo drives|find /v ""

相關文章
相關標籤/搜索