JREPL - 如何仅替换文本文件中的第二个匹配项?

问题描述 投票:0回答:1

是否可以告诉“JREPL.bat”仅替换文本文件中“[AddReg]”的第二个匹配项? 我已经尝试了几天寻找解决方案,但失败了。

“JREPL.bat”命令/INC“3:7”没有帮助,因为行号会根据文本文件改变太多。

CALL ".\JREPL.bat" "\[AddReg\]" "[AddReg]\r\nNewLine." /XSEQ /M /F "test.txt" /O "test1.txt"

[AddReg]
1TEST.
2TEST.
3TEST.
[AddReg]
1TEST.
2TEST.
3TEST.
[AddReg]
1TEST.
2TEST.
3TEST.
replace match xregexp jrepl multiple-occurrence
1个回答
0
投票

据我所知,没有本地方法可以使用 JREPL.bat 来完成此操作。但是,如果您愿意使用自定义批处理脚本来完成此操作,则可以执行以下操作:

@echo off
setlocal enabledelayedexpansion

set "input_file=test.txt"
set "output_file=test1.txt"
set "search_string=[AddReg]"
set "replace_string=[AddReg]\r\nNewLine."

set "count=0"

(for /f "tokens=*" %%a in (%input_file%) do (
    set "line=%%a"
    if !count! lss 2 (
        set "line=!line:%search_string%=%replace_string%!"
        if not "!line!"=="%%a" (
            set /a "count+=1"
        )
    )
    echo !line!
)) > %output_file%

endlocal

脚本将忽略第一个匹配项,替换第二个匹配项,然后退出循环。

© www.soinside.com 2019 - 2024. All rights reserved.