[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理命令findstr怎样查找文本中指定的文字,并提取所在行的前几行或后几行?

文本内容:
公元前212年,罗马军队入侵叙拉古,将近80岁的阿基米德
正在全神贯注地研究沙堆中的一个几何图形,疏忽了回答一
个罗马士兵的问话,结果被长矛戳死。
18世纪的巴黎女孩索非·热尔曼在一本叫《数学的历史》书
中看到这一章,便得出这样的结论:如果一个人会如此痴
迷于一个导致他死亡的几何问题,那么数学必定是世界上最迷人的学科了。

比如查找“《数学的历史》”并取出所在行的上一行文字怎么做到?不胜感激

  1. gawk "/《数学的历史》/{print a}{a=$0}" a.txt > b.txt
复制代码

TOP

回复 2# DAIC


    大哥,我想弄明白怎样使用查找命令解决,不过还是谢谢。

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set fileName=a.txt
  4. for /f "tokens=1 delims=:" %%i in ('findstr /n "《数学的历史》" %fileName%') do (
  5.     set lineKeyword=%%i
  6. )
  7. if !lineKeyword! equ 1 (
  8.     echo,
  9. ) else if !lineKeyword! equ 2 (
  10.     set /p linePri=<%fileName%
  11.     echo,%linePri%
  12. ) else (
  13.     set /a lineSkip=lineKeyword-2
  14.     call :next !lineSkip!
  15. )
  16. pause
  17. goto :eof
  18. :next
  19. for /f "skip=%1" %%i in (%fileName%) do (
  20.     echo,%%i
  21.     goto :eof
  22. )
复制代码

TOP

回复 4# DAIC


    多谢指教,程序完全可以实现我想要的结果,您的程序在判断目标字符行数是否为第一行或第二行时,为什么区别对待呢?如果是第一行或第二行,可不可以都用 echo,来跳过?请指点。

TOP

回复 5# pyc一厘米


    第二行为什么要跳过?

TOP

回复 6# DAIC


   哦 我理解错了,非常感谢指点。

TOP

返回列表