标题: [问题求助] 如何从文本中提取第一行数字用于sed中的参数 [打印本页]
作者: dingniu2 时间: 2020-3-19 21:13 标题: 如何从文本中提取第一行数字用于sed中的参数
如题,一个文件夹有文件a.out、a.out.txt、b.out、b.out.txt、c.out、c.out.txt......,其中*.out内容包括很多字符,*.out.txt只有一个数值。我的目的是删除*.out中的一行,要求删除这一行的行号是其对应的*.out.txt里的数值。请问大家这个命令该如何写?
作者: wujunkai 时间: 2020-3-20 08:49
回复 1# dingniu2 - @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
复制代码
默认行号从1开始。
建议先备份,出现意外概不负责。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |