我有一个搜索词列表。如何在另一个文件中替换它们?

我有一个搜索词列表。如何在另一个文件中替换它们?

我确信这个问题被问过多次,但我找不到。基本上我有一个文本文件和所有搜索字符串的列表(例如cat,,,等)。我希望将文本文件中出现的所有这些字符串都替换为。我知道像 Pythondog这样的脚本语言可以处理这个问题,但有没有更轻量级的解决方案,比如 Notepad++ 或 sed/awk?banana<span class="hello">$1</span>

答案1

您可以创建一个批处理文件来完成该作业。将以下代码复制到文本文件中,并使用您想要的名称保存,但扩展名为“.bat”。

在“set Wordlist=”部分,您应该指定单词列表(搜索字符串)的路径。将文本文件拖放到批处理中,它将创建一个新文件,其名称与旧文件相同,但名称中带有“_New”...

@echo off

:: Please drag and drop the text file to this batch
if not exist "%~1" exit

:: Put the path to your wordlist here:
set WordList=Wordlist.txt

set FileN=%~n1

for /f "usebackq delims=" %%a in ("%WordList%") do set /a TCounter+=1

for /f "usebackq eol= delims=" %%a in ("%~1") do for /f "usebackq eol= delims=" %%b in ("%WordList%") do call :Rename "%%a" "%%b"
exit

:Rename
IF "%Counter%"=="" set "Linha=%~1"
set /a Counter+=1
set "SWord=%~2"
echo %~1|find /i "%~2" 1>nul 2>nul
IF %Errorlevel% EQU 0 call set "Linha=%%Linha:%SWord%=<span class="hello">$1</span>%%"
IF %Counter% EQU %TCounter% (
                             for %%a in ("%Linha%") do >>"%FileN%_NEW.txt" echo %%~a 
                             set Counter=
                            )
goto :EOF

在此处输入图片描述

答案2

处理 html 代码中的字符串时,请考虑您需要处理任何需要在 bat 脚本中使用转义的字符...

对于线条,您可以使用set /p,对于替换,我建议使用powershell -replace

@echo off

cd/d "%~dp0" & set "_rplc=<span class="hello">$1</span>"

for /f %%f in ('type .\"file_read.txt"^|findstr /r [.-a-Z-0-9] "file_edit.txt"^|find/v /c ""
')do set "_i=%%~f" & ((for /l %%L in (01, 01, %%~f)do set /p _find_%%~L=)<.\"file_read.txt")

for /l %%L in (01, 01, %_i%)do if defined _find_%%~L >.\"file_edited.txt" (
    PowerShell -nOp -c "(gc ".\file_edit.txt" -raw).replace("$env:_find_%%~L","$env:_rplc")"
    ) & <con: copy /y .\"file_edited.txt" ".\file_edit.txt" >nul 

相关内容