返回列表 发帖
本帖最后由 hfxiang 于 2024-1-27 16:59 编辑

回复 30# kokoxx

可试一下sed( http://bcn.bathome.net/tool/4.9/sed.exe

假定 x=3,y=2
sed -z -r  "s/^\n{3}\b/\n\n/;s/\b\n{4}\b/\n\n\n/g" 1.txt>2.txtCOPY
假定 x=3~10,y=2
sed -z -r  "s/^\n{3,10}\b/\n\n/;s/\b\n{4,11}\b/\n\n\n/g" 1.txt>2.txtCOPY

TOP

回复 30# kokoxx


  
@echo off
rem 批处理保存为utf-8编码格式
chcp 65001 >nul
cd /d "%~dp0"
set /a x=3,y=2
for /f "delims=" %%i in ('dir /b /a-d *.txt') do (
setlocal
(for /f "tokens=1* delims=[]" %%a in ('find /n /v "" ^<"%%i"') do (
if "%%b" equ "" (
set /a n+=1
) else if defined n (
set /a m=n/x*y+n%%x
set n=
setlocal enabledelayedexpansion
for /l %%l in (1,1,!m!) do (
echo=
)
endlocal
echo=%%b
) else (
echo=%%b
)
))>$
move $ "%%i"
endlocal
)
pauseCOPY
bat小白,请多指教!谢谢!

TOP

回复 32# 77七


    大佬您好,您之前写过一个脚本,用于删除txt包含特定文本(比如“标签”)的文本行附近的文本行
@echo off
chcp 65001 >nul
for /f "useback delims=" %%i in (`dir /b /a-d *.txt`) do (
setlocal
            for /f "useback tokens=1* delims=[]" %%a in (`find /n "标签" ^<"%%i"`) do (
for %%x in ( 0 ) do (
set /a n=%%a+%%x
call set _"%%n%%"=1
)
)
(for /f "useback tokens=1* delims=[]" %%a in (`find /n /v "" ^<"%%i"`) do (
if not defined _"%%a" (
echo=%%b
)
))>$
move $ "%%i"
endlocal
)
pauseCOPY
现在想用类似的bat写法实现

【处理前】

=== 第1章奥特曼

【处理后】

=== 第1章 奥特曼

(案例结束)

也就是将符合标准的文本行(关键词是“=== 第”)中的“章”变成“章 ”

该怎么修改?

TOP

返回列表