有時需要在命行下(command-line)的查詢與替換字串,有什麼簡單高效的方法呢? 首先,如果你在.Net Framework 2.0 version上的話,可以使用PowerShell(實際上Windows後面的作業系統都支援PowerShell). 看下面簡單例子:
Get-Content test.txt | ForEach-Object { $_ -replace "2012", "2013" } | Set-Content text2.txt
上面PowerShell指令碼把text.txt檔案中所有2012的字串替換為2013後另存為text2.txt檔案,這裡使用到PowerShell的管道機制,你可以把上面指令碼存為*.ps1檔案,在PowerShell控制檯就可以執行了.是不是很簡單.
第二類方法,不想依賴.Net環境,那可以選擇FART這個小工具,下載後是單個fart.exe檔案,68.0 KB的32bit程式,有很多功能,看以下引數列表:
Usage: FART [options] [--] <wildcard>[,...] [find_string] [replace_string]
Options:
-h, --help Show this help message (ignores other options)
-q, --quiet Suppress output to stdio / stderr
-V, --verbose Show more information
-r, --recursive Process sub-folders recursively
-c, --count Only show filenames, match counts and totals
-i, --ignore-case Case insensitive text comparison
-v, --invert Print lines NOT containing the find string
-n, --line-number Print line number before each line (1-based)
-w, --word Match whole word (uses C syntax, like grep)
-f, --filename Find (and replace) filename instead of contents
-B, --binary Also search (and replace) in binary files (CAUTION)
-C, --c-style Allow C-style extended characters (\xFF\0\t\n\r\\ etc.)
--cvs Skip cvs dirs; execute "cvs edit" before changing files
--svn Skip svn dirs
--remove Remove all occurences of the find_string
-a, --adapt Adapt the case of replace_string to found string
-b, --backup Make a backup of each changed file
-p, --preview Do not change the files but print the changes
看下面的例子:
fart.exe -p -r -c -- J:\TEMP\txt\*.tt 2010-2014 2010-2015
執行完上面的命令後,把J:\Temp\txt\資料夾所有擴充套件為tt的檔案,查詢2010-2014替換為2010-2015的字串. 支援預覽,萬用字元,記數等功能.並且fart.exe是一個免費的小程式.
當然實際上還有常見的Bat檔案,VBScript等方法來實現但不優雅.希望對您有幫助.
你可能感興趣的文章:
作者:Petter Liu
出處:http://www.cnblogs.com/wintersun/
本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線,否則保留追究法律責任的權利。
該文章也同時釋出在我的獨立部落格中-Petter Liu Blog。