如何从文本中提取第一行数字用于sed中的参数
如题,一个文件夹有文件a.out、a.out.txt、b.out、b.out.txt、c.out、c.out.txt......,其中*.out内容包括很多字符,*.out.txt只有一个数值。我的目的是删除*.out中的一行,要求删除这一行的行号是其对应的*.out.txt里的数值。请问大家这个命令该如何写? [b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=227312&ptid=55122]1#[/url] [i]dingniu2[/i] [/b][code]@echo off@setlocal enabledelayedexpansion
:main
for /R %%i in (*.out) do call:deal %%i
pause
goto:eof
:deal
set /P want=<%~1.txt
set /A want=want-1
call:fopen %~1 temp
del %~1
set /A len=fopen_len-1
for /L %%i in (0,1,%len%) do if %%i NEQ %want% echo=!temp[%%i]!>>%~1
goto:eof
:fopen
rem %~1 为读取文件名,%~2为储存的变量名
rem 若无%~2,使用%~n1作为储存的变量名
set fopen_file=%~1
if "%~2"=="" (
set fopen_vale=%~n1
) else (
set fopen_vale=%~2
)
set fopen_len=0
for /F "tokens=1* delims=:" %%i in ('findstr /n .* %fopen_file%') do (
set %fopen_vale%[!fopen_len!]=%%j
set /A fopen_len+=1
)
goto:eof[/code]默认行号从1开始。
建议先备份,出现意外概不负责。
页:
[1]