我的任务是从文本文件中提取一些数据,我想知道是否有人知道我的问题的快速cmd方法。
我需要搜索的文件非常大,包含重复记录。 我要做的是搜索一行文字,说: ' searchForThisLineOfText'
然后,当找到它时,从该文本转到下一行,并将该行写入文件。
因此该文件的内容看起来像这样:
searchForThisLineOfText
563473
someOtherLine
34583933
anotherline
2342
searchForThisLineOfText
3424
someOtherLine
34583933
anotherline
2342
由此,我想将数字 563473 和 3424 写入文件。
有人对如何做到这一点有任何想法吗?
提前致谢。
答案 0 :(得分:1)
这假设空白行实际上不在文本文件中。
@echo off
type "file.txt" | findrepl "searchForThisLineOfText" /o:1:1 >"newfile.txt"
pause
这使用名为findrepl.bat
的助手批处理文件(由aacini提供) - 从以下网址下载:https://www.dropbox.com/s/rfdldmcb6vwi9xc/findrepl.bat
将findrepl.bat
放在与批处理文件相同的文件夹中或路径上。
答案 1 :(得分:1)
@ECHO OFF
SETLOCAL
SET "found="
(
FOR /f "delims=" %%a IN (q25871330.txt) DO (
IF DEFINED found ECHO %%a
IF "%%a"=="searchForThisLineOfText" (SET "found=Y") ELSE (SET "found=")
)
)>newfile.txt
GOTO :EOF
我使用了一个名为q25871330.txt
的文件,其中包含我的测试数据。
制作newfile.txt
答案 2 :(得分:1)
这将生成一个临时文件,其中包含需要检索的行数,然后检索所需的行
@echo off
setlocal enableextensions enabledelayedexpansion
rem We will need a temporary file
set "tempFile=%temp%\%~nx0.%random%.tmp"
rem Get the number of the lines that we need to retrieve
(
for /f "delims=:" %%a in ('
findstr /n /l /c:"searchText" "data.txt"
') do ( set /a "n=%%a+1" & echo(!n!:)
)>"%tempFile%"
rem Retrieve the indicated lines to the output file
(
for /f "tokens=1,* delims=:" %%a in ('
findstr /n /r /c:"^" "data.txt"
^| findstr /b /l /g:"%tempFile%"
') do echo(%%b
)>"outputFile.txt"
rem Remove the temporary file
del "%tempFile%" > nul 2>nul