我要尋找以下一個簡單的批處理的解決方案替換每次出現:查找字符串,並用不同的字符串
在一些我想要替換爲另一個字符串的文件。可以用Notepad ++來做到這一點。但是,每個新字符串必須是唯一的,從新字符串列表中讀取。
所以,如果 'ABC' 在一些文件時,我有新的字符串列表,更換這樣說:
ABC - >艾力克斯
ABC - >本
ABC - >克里斯
ABC - >戴夫
等
我可以有新的字符串txt文件的閱讀。
希望有人對我有一個解決方案!
非常感謝, 倫納特
我要尋找以下一個簡單的批處理的解決方案替換每次出現:查找字符串,並用不同的字符串
在一些我想要替換爲另一個字符串的文件。可以用Notepad ++來做到這一點。但是,每個新字符串必須是唯一的,從新字符串列表中讀取。
所以,如果 'ABC' 在一些文件時,我有新的字符串列表,更換這樣說:
ABC - >艾力克斯
ABC - >本
ABC - >克里斯
ABC - >戴夫
等
我可以有新的字符串txt文件的閱讀。
希望有人對我有一個解決方案!
非常感謝, 倫納特
請問一個Perl腳本的工作?
my @words = qw(alex ben chris dave ...);
while (<>) {
s/abc/shift @words/ge;
print;
}
如果你想要的單詞列表循環: 「!」
my @words = qw(...);
my $i = 0;
while (<>) {
# I know I should have written this in a more readable way...
s{abc}{$words[$i++] // $words[$i=0]}ge;
print;
}
在's/x/y/z'中,*'x' *是一個正則表達式,*'y' *是替換文本和*'z' *是標誌。如果指定了「'e'」標誌,則替換文本被視爲可執行的Perl代碼。 – grawity 2011-03-03 15:06:47
或者作爲批處理腳本
@echo off
setlocal Disabledelayedexpansion
set "wordlist=alex ben chris dave"
for /F "tokens=* delims=" %%a in (myFile.txt) do (
set "line=%%a"
setlocal Enabledelayedexpansion
for /F "tokens=1,*" %%b in ("!wordlist!") do (
set "newline=!line:abc=%%b!"
(echo(!newline!)
if !newline! NEQ !line! (
endlocal
set "wordlist=%%c"
) ELSE (
endlocal
)
)
)
編輯更改爲安全的變體
試圖找到一個sed
可執行的Windows支持的-i
(--inline
)開關,你的工作將成爲一個蹣跚學步的任務!
A *簡單*批處理解決這樣一個問題?幾乎不可能。然而,最終它可能僅僅取決於你發現的簡單。 – 2011-03-03 17:16:31
@Andriy:只有當您的「批」的定義是「.bat文件」... – grawity 2011-03-03 18:51:51