Board logo

标题: 如何提出文本文件中某固定行的前第一行内容? [打印本页]

作者: cain     时间: 2007-8-11 10:42    标题: 如何提出文本文件中某固定行的前第一行内容?

一个文本文件中有二十多行,某行的中有一固定字符是“ABC”,想通过这个固定字符的行查找出在它前面的前第一行的内容(即要查找的行与有固定字符的行中间隔着一行),并使之成为变量。(在XP的命令行中操作,尽量不用第三方工具)
如:

......
......
......
skfsljfk  (此行即是要查找的行,内容变化的)
aaafdssd
ABC       (此行内容是固定的,为ABC)
......
......
作者: ansipeter     时间: 2007-8-11 11:07
感觉代码还是有些臃肿,没有测试,先试试吧
@echo off&setlocal
for /f "delims=:" %%? in ('findstr /n .* 文件.txt^|findstr "^[0-9]*:ABC$"') do set c=%%?
set /a d=%c%-2
for /f "tokens=1* delims=:" %%a in ('findstr /n .* 文件.txt^|findstr "^%d%:.*"') do set e=%%b
echo.%e%
[ Last edited by ansipeter on 2007-8-11 at 11:09 AM ]
作者: cain     时间: 2007-8-11 11:21
终于测试成功了,谢谢。
另外有没有更简单的代码呢?

[ Last edited by cain on 2007-8-11 at 11:50 AM ]
作者: tao0610     时间: 2007-8-11 12:33
过多的管道符会影响速度.
@echo off
for /f "delims=:" %%a in ('findstr/nx "ABC" test.txt') do set/a row=%%a-3
for /f "skip=%row% delims=" %%a in (test.txt) do echo.%%a&&goto end
:end
pause&exit

作者: cain     时间: 2007-8-11 14:55
4楼的代码很不错,可惜如果ABC这个固定的字符换成:“CC  ABC”即有空格的字符就会出错,请问该如何改呢?
作者: ansipeter     时间: 2007-8-11 15:09
其实我还是劝楼主多看看帮助,我想即使你看了帮助也不是很认真
把这句改成
for /f "delims=:" %%a in ('findstr/nx /c:"CC  ABC" test.txt') do set/a row=%%a-
3
试试
作者: flyingphf     时间: 2008-4-15 19:34
4楼的,我运行你的文件怎么显示错误啊
作者: maidu     时间: 2008-4-15 19:36
这个问题很简单啊
作者: flyingphf     时间: 2008-4-17 08:16
?