我陷入了Windows批处理(cmd)模式搜索。我需要在文件中搜索模式,并需要返回行号。我使用了FINDSTR
/X
选项,但它也将图案匹配的行附加到行号。
此外,我没有权限安装任何实用程序,如unix-utilities,以便我可以使用cut
来提取行号。
答案 0 :(得分:4)
for /f "delims=:" %%a in ('findstr /n "pattern" "file"') do echo "pattern" found in line #%%a
答案 1 :(得分:4)
Endoro发布了一个很好的纯批解决方案。
另一种选择是使用我写的名为REPL.BAT的混合JScript /批处理实用程序,它执行正则表达式搜索并替换stdin并将结果写入stdout。它纯粹基于脚本,因此不需要安装任何可执行文件。它适用于从XP开始的任何现代Windows机器。 REPL.BAT is available here
假设REPL.BAT位于您当前的目录中,或者更好,位于PATH中的某个位置:
findstr /n "pattern" "file.txt"|repl :.* ""