2014-01-14 94 views
1

我堅持爲以下任務編寫批處理腳本。 假設我有以下文本文件。使用批處理腳本查找並替換

A.TXT

hello world-0 
hi ABC 

hello world-1 
hi ABC 

hello world-2 
hi ABC 

B.txt

CAT 
MAT 
RAT 

output.txt的文件應包含

hello world-0 
hi CAT 

hello world-1 
hi MAT 

hello world-2 
hi RAT 

我怎麼能ACH即使使用批處理腳本? 謝謝!

回答

0

嘗試使用此

@echo off 
setlocal enableextensions enabledelayedexpansion 

rem Read a.txt with findstr /n to avoid blank line removal 
rem Read b.txt with set /p only when a replacement is needed 

< "b.txt" (
    for /f "tokens=1,* delims=:" %%f in ('findstr /n "^" ^<"a.txt"') do (
     set "line=%%g" 
     if defined line if not "!line: ABC=!"=="!line!" (
      set /p "repl=" 
      for /f %%r in ("!repl!") do set "line=!line: ABC= %%r!" 
     ) 
     echo(!line! 
    ) 
) 

endlocal 

這應該做的工作。

0

使用一個好的文件解析工具,如awk。你可以下載awk here

C:\>awk "FNR==NR{a[++c]=$1;next}{ for(i=1;i<=NF;i++){ if($i==\"ABC\") { $i=a[++d] } } }1" B.txt A.txt 
hello world-0 
hi CAT 

hello world-1 
hi MAT 

hello world-2 
hi RAT 
相關問題