命行下的查詢與替換字串

weixin_34402090發表於2013-05-18

      有時需要在命行下(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等方法來實現但不優雅.希望對您有幫助.
你可能感興趣的文章:

Powershell實現建立zip壓縮檔案


作者:Petter Liu
出處:http://www.cnblogs.com/wintersun/
本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線,否則保留追究法律責任的權利。
該文章也同時釋出在我的獨立部落格中-Petter Liu Blog

相關文章