我正在尝试在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"
)
)
)
答案 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