从CSV文件中查找和替换TEXT

时间:2013-11-07 22:55:53

标签: batch-file csv replace find translation

我正在尝试在CSV或XLS文件的第一列上查找单词,并将其替换为XLS CSV的第二列中的单词。我做了类似的东西,但它不起作用。

你能帮帮我吗?对于每一行,名为ita的变量中的第一列和名为eng的变量中的第二列,然后找到Ita并替换Eng。您可以想象我需要翻译一个网页,从csv开始,每个列都有一种语言。我的csv文件结构是:

ita1;eng1
ita2;eng2

等...

这是我错误的剧本:

@echo off
setlocal enableextensions enabledelayedexpansion
set host=%COMPUTERNAME%
echo Host: %host%
pause
for /f "tokens=1 delims=;" %%Ita in (index.csv) do (
  SET ita=%%Ita
  echo %ita%
  pause
  for /f "tokens=2 delims=;" %%eng in (index.csv) do (
    set eng=%%eng
    echo %eng
    pause
    (for /f "delims=" %%i in ('findstr /n "^" "index.txt"') do (
      set "transl=%%i"
      set "transl=!line:%ita%=%eng%!"
      echo(!line!
        endlocal
      ))>"index2.txt"
    type "index2.txt"
    )
  )
)

3 个答案:

答案 0 :(得分:1)

(for /f "tokens=1,2 delims=;" %%a in (index.csv) do echo(%%b;%%a)>index2.txt
type index2.txt

答案 1 :(得分:0)

@echo off
    setlocal enableextensions enabledelayedexpansion

    (for /f "tokens=* usebackq" %%l in ("index.txt") do (
        set "line=%%l"
        for /f "tokens=1,2 delims=; usebackq" %%a in ("index.csv") do (
            set "line=!line:%%a=%%b!"
        )
        echo !line!
    )) > index2.txt

但是这种方法并不关心子串匹配。

答案 2 :(得分:0)

尝试使用awk

awk -F';' 'NR==FNR {a[$1]=$2;next} { for(x in a) gsub(x,a[x]) } 1' index.csv index.txt