标题: [文本处理] 批处理命令findstr怎样查找文本中指定的文字,并提取所在行的前几行或后几行? [打印本页]
作者: pyc一厘米 时间: 2014-1-6 10:10 标题: 批处理命令findstr怎样查找文本中指定的文字,并提取所在行的前几行或后几行?
文本内容:
公元前212年,罗马军队入侵叙拉古,将近80岁的阿基米德
正在全神贯注地研究沙堆中的一个几何图形,疏忽了回答一
个罗马士兵的问话,结果被长矛戳死。
18世纪的巴黎女孩索非·热尔曼在一本叫《数学的历史》书
中看到这一章,便得出这样的结论:如果一个人会如此痴
迷于一个导致他死亡的几何问题,那么数学必定是世界上最迷人的学科了。
比如查找“《数学的历史》”并取出所在行的上一行文字怎么做到?不胜感激
作者: DAIC 时间: 2014-1-6 10:28
- gawk "/《数学的历史》/{print a}{a=$0}" a.txt > b.txt
复制代码
作者: pyc一厘米 时间: 2014-1-6 10:44
回复 2# DAIC
大哥,我想弄明白怎样使用查找命令解决,不过还是谢谢。
作者: DAIC 时间: 2014-1-6 11:11
- @echo off
- setlocal enabledelayedexpansion
- set fileName=a.txt
- for /f "tokens=1 delims=:" %%i in ('findstr /n "《数学的历史》" %fileName%') do (
- set lineKeyword=%%i
- )
- if !lineKeyword! equ 1 (
- echo,
- ) else if !lineKeyword! equ 2 (
- set /p linePri=<%fileName%
- echo,%linePri%
- ) else (
- set /a lineSkip=lineKeyword-2
- call :next !lineSkip!
- )
- pause
- goto :eof
-
- :next
- for /f "skip=%1" %%i in (%fileName%) do (
- echo,%%i
- goto :eof
- )
复制代码
作者: pyc一厘米 时间: 2014-1-6 13:00
回复 4# DAIC
多谢指教,程序完全可以实现我想要的结果,您的程序在判断目标字符行数是否为第一行或第二行时,为什么区别对待呢?如果是第一行或第二行,可不可以都用 echo,来跳过?请指点。
作者: DAIC 时间: 2014-1-6 13:09
回复 5# pyc一厘米
第二行为什么要跳过?
作者: pyc一厘米 时间: 2014-1-6 13:58
回复 6# DAIC
哦 我理解错了,非常感谢指点。
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |