Board logo

标题: [问题求助] 如何从文本中提取第一行数字用于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
  1. @echo off
  2. @setlocal enabledelayedexpansion
  3. :main
  4.     for /R %%i in (*.out) do call:deal %%i
  5. pause
  6. goto:eof
  7. :deal
  8.     set /P want=<%~1.txt
  9.     set /A want=want-1
  10.     call:fopen %~1 temp
  11.     del %~1
  12.     set /A len=fopen_len-1
  13.     for /L %%i in (0,1,%len%) do if %%i NEQ %want% echo=!temp[%%i]!>>%~1
  14. goto:eof
  15. :fopen
  16.     rem %~1 为读取文件名,%~2为储存的变量名
  17.     rem 若无%~2,使用%~n1作为储存的变量名
  18.     set fopen_file=%~1
  19.     if "%~2"=="" (
  20.         set fopen_vale=%~n1
  21.     ) else (
  22.         set fopen_vale=%~2
  23.     )
  24.     set fopen_len=0
  25.     for /F "tokens=1* delims=:" %%i in ('findstr /n .* %fopen_file%') do (
  26.         set %fopen_vale%[!fopen_len!]=%%j
  27.         set /A fopen_len+=1
  28.     )
  29. goto:eof
复制代码
默认行号从1开始。
    建议先备份,出现意外概不负责。




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2