findstr高手进
bat吧
全部回复
仅看楼主
level 1
nero_bdtb 楼主
有一文件a.txt,格式如下:
1 a b
10 c d
100 e f
第一列是序号,要求输入序号=1时,只取第一行
我现在遇到的问题是:用如下命令显示全部:
findstr "^1" c:\a.txt
2011年10月18日 02点10分 1
level 8
findstr 中,^1 的意思是取行首为 1 的行,当然不对了。。。。取指定行的办法很多,举几个相互之间差异较大的例子
set /p n=要取的行数
::以下不考虑用户输入的合法性,而且计算行数时包括空行
findstr /n .* a.txt|findstr /b %n%:
::纯 findstr 法,缺点是效率不够高,而且带行号
for /f "tokens=1* delims==" %%a in ('findstr /n .* a.txt') do if %%a==%n% echo %%a
::最常用的办法,较准确,但是不适合对付大文件
for /f "skip=%n% tokens=1* delims==" %%a in ('echo\^&findstr /n .* a.txt') do if not defined echo set echo=%%b
echo;%echo%
::另一种办法,但是同样不适合对付大文件
(for /l %%a in (1 1 %n%) do set /p=
set /p str=)<a.txt
echo;%str%
::适用于处理大文件,但支持的行字数上限只有 1023 字节
more +1 a.txt>tmp.txt
findstr /v /x /g:tmp.txt a.txt
::另类思路,适用于每行内容不一致的时候,但是缺点也是显而易见得多。。。。。

2011年10月18日 13点10分 2
level 11
留爪
2011年10月18日 14点10分 3
level 1
123
2016年03月07日 10点03分 4
@黄田杰 删封十天
2016年03月07日 11点03分
@贴吧用户_0KSaNSR 处理了吗?
2016年03月07日 12点03分
回复 黄田杰 : 没有。
2016年03月07日 13点03分
level 13
………………封坟线………………
2016年03月07日 12点03分 7
1