a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > BAT > 正文

字符串查找 cmd find命令

2020-07-26 20:24:44
字體:
來源:轉載
供稿:網友
我對findstr是如此的依賴,以至于當我向各位講解find命令的時候,我還得老老實實地在cmd窗口中敲下 find /? 這條命令,然后重重地按下回車鍵。

  find /? 的執行結果很快,唰的一下,幫助信息全出來了,與findstr命令10多個開關比起來,find僅有5個開關,算得上小巫見大巫了。

  find命令的基本格式是這樣的:find "要查找的字符串" 要查找的文件,在這里,"要查找的字符串"這個內容是必不可少的,引號也是必須的。例如:find "bathome" d:/test.txt,表示在D盤根目錄下的文本文件test.txt中查找含有 bathome 這一字符串的所有行。

  find的結果將會有兩種情況:

  1、當文件中包含要查找的字符串時,將返回這個字符串所在位置的整行內容,具體格式為:第一行是"---------- ×××" (×××表示被查找的文件名,不包括引號對),第二行開始才出現包含字符串的整行內容;
  2、當文件中沒有出現要查找的字符串時,find的結果僅僅返回"---------- ×××" 這一行內容(×××表示被查找的文件名,不包括引號對)。

  在查找指定字符串的時候,有的場合需要區分大小寫,有的場合則對大小寫并不在意,如何實現這些需求呢?

  很簡單,在find的時候,添加或取消/i開關就是了,具體用法為:find /i "Abc" test.txt 表示不區分大小寫,文本內容中含有 Abc、abc、ABC之類的都算;find "Abc" test.txt則嚴格區分字符大小寫,只能匹配Abc,而不能匹配abc、ABC之類的字符。

  有時候,我們的需求并不是為了查找到某個字符串,而是要檢測哪些行不含有特定的字符串,這個時候,可以使用開關/v,用法為:find /v "Abc" test.txt,它表示查找那些不含字符串Abc的行(Abc要區分大小寫),如果不區分abc的大小寫,那么,應該寫成 find /i /v "Abc" test.txt。

  有時候,我們的要求很簡單,僅僅只是想統計包含某個字符串的行總共有多少,這個時候,應該使用開關/c,寫成 find /c "abc" test.txt。

  如果要在每行的行首顯示行號,怎么辦?那就寫成 find /n "abc" test.txt 吧,它會把test.txt的內容都顯示出來,與原文不一樣的是,在每行內容的行首,都加上了行號――注意,它僅僅是在顯示的時候加上行號而已,并沒有真正改寫文件的內容。

  如果你看到這樣的命令:find /i /v /n "Abc" test.txt,請一點要先沉住氣,不要被眾多的開關弄得眼花繚亂嚇趴下了,仔細對照上面的解釋,相信你很快就會理解它的功能:在test.txt文件中,查找不包含字符串Abc的所有行,并在行首標上這些行的行號,查找的時候,字符串Abc不區分大小寫。

  要是使用這樣的語句:find /c /n "abc" test.txt,會出現什么樣的結果呢?答案是:開關/n會被忽略掉,最終結果不會顯示帶行號的行內容,只會顯示匹配的總行數而已。

  echo abcdef|find "abc",見過這種寫法嗎?它的含義是:在字符串abcdef中,檢測是否存在字符串abc,也就是說,find支持管道符號,把管道符號之前的語句的執行結果,作為指定字符串的查找對象,甚至,你可以使用這樣的語句:find "abc" test.txt|find "xyz",它表示在test.txt中查找同時存在字符串abc和字符串xyz的行,只要你愿意,你可以繼續用管道符號把這個find語句連接下去,我們把這個過程稱為多重過濾。

  在前面,我們說過,在 find "要查找的字符串" 要查找的文件 這條命令語句中,引號是必須的,要是我們要查找的內容就是雙引號本身,那又該怎么辦?

  答案很簡單:把雙引號本身先用雙引號轉義,再放到雙引號對中,寫成 find """" test.txt 的格式,如果要查找兩個連續的雙引號,則應該寫成 find """""" test.txt。

  如果你想查找兩行之間的字符塊,我勸你趁早放棄這個瘋狂的想法,因為,find僅僅針對位于同一行上的字符串,不能查找跨行的字符塊。

  與findstr命令相比,find的功能確實有限得多,僅僅因為不支持正則表達式這一點,就有不少人把它視為雞肋,從而遭到無情的拋棄。

  然而,find并非一無是處,憑借自己的獨門絕技,在與findstr的競爭中,它掙得了一席之地。

  這些獨門絕技是什么呢?(感謝BatCoder的提醒和zqz0012005的補充)

  1、統計含指定字符串的總行數。find /c "abc" test.txt可以統計test.txt中含有字符串abc的總行數,而findstr則沒有直接提供該功能,需要配合for語句才能實現;
  2、find可以讀取Unicode格式的文本,而findstr則不行;
  3、find可以過濾某些特殊字符,而findstr則不行,比如,我們在使用fsutil fsinfo drives語句查詢磁盤分區的時候,如果想讓盤符分行顯示而不是顯示在同一行上的時候(這在用for語句提取盤符的時候很有用),find可以大顯身手,而findstr只能干瞪眼了,具體語句為:fsutil fsinfo drives|find /v ""
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久精品日产第一区二区三区 | 精品国产一区二区三区久久影院 | av国产在线被下药迷网站 | 日本免费看 | 亚洲第一av网站 | 日韩欧在线 | 精品1区2区| 成人免费视频在线观看 | 久久久久一区二区三区 | 日韩最新av| 男人的天堂久久 | 国产精品久久久久久久久久久久久久 | 久久香蕉网 | 久热精品视频 | 国产午夜久久 | 国产精品毛片 | 国产精品久久久久久亚洲毛片 | 成人av电影免费在线观看 | 男女视频在线观看 | 色综合久久伊人 | 久久精品亚洲一区二区 | 日韩av一区二区在线 | 在线三级av| 日本免费三片免费观看 | 在线欧美视频 | www.久久| 97在线观看视频 | 黄色片在线免费看 | 91玖玖| 国产在线观看av | 瑟瑟视频在线看 | 色婷婷综合久久久久中文一区二区 | 国产成人av一区二区三区 | 精品久久久久久国产 | 欧美三级在线 | 久久99精品国产 | 国产视频一区二区在线观看 | 亚洲成人免费 | 久久精品国产99国产 | 能免费看av的网站 | 毛片在线免费 |