我被困在windows批处理(cmd)模式搜索中。我需要在文件中搜索一个模式,并且需要返回行号。我已使用FINDSTR
和/X
选项,但它也将图案匹配线附加到行号。如何仅使用FINDSTR获取匹配模式的行号
另外,我无权安装任何类似unix实用程序的实用程序,以便我可以使用cut
来提取行号。
我被困在windows批处理(cmd)模式搜索中。我需要在文件中搜索一个模式,并且需要返回行号。我已使用FINDSTR
和/X
选项,但它也将图案匹配线附加到行号。如何仅使用FINDSTR获取匹配模式的行号
另外,我无权安装任何类似unix实用程序的实用程序,以便我可以使用cut
来提取行号。
Endoro发布了一个很好的纯批量解决方案。
另一种选择是使用我写的名为REPL.BAT的混合JScript /批处理实用程序,它执行正则表达式搜索并替换stdin并将结果写入标准输出。它纯粹是基于脚本的,所以不需要安装可执行文件。它适用于从XP开始的任何现代Windows机器。 REPL.BAT is available here。
假设REPL.BAT是在当前目录中,或者更好的是,你的PATH中的某个地方:
findstr /n "pattern" "file.txt"|repl :.* ""
for /f "delims=:" %%a in ('findstr /n "pattern" "file"') do echo "pattern" found in line #%%a
我不知道为什么它不工作... > FOR/F“delims = :“%% a in('findstr/n/C:”Line 1“test')do line#%% a %% a在此时出现意外。请看看... –
@AbinashBishoyi - 如果直接从命令行运行,那么你需要在这两个地方使用'%a'。在批处理脚本中使用时,百分比只会加倍。 – dbenham
@dbenham非常感谢您的解释... –
非常感谢,它的工作原理... –