中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: [求助]帮助分析! 上一主题 | 下一主题
tempuser
高级用户





积分 547
发帖 261
注册 2006-4-15
状态 离线
『楼 主』:  [求助]帮助分析!

findstr /n . test.txt

.是任何字符,/n是在匹配的每行前打印行数,那么上面的命令理解为打印文本test.txt的"全部行"?

findstr . test.txt^|findstr /n .

首先在test.txt中查找任意字符,那么转义符后的findstr /n .和findstr /n . test有什么区别呢?

我是在本站一个帖子看到的如下代码:
前者应该是获取文本的全部行数,后者是获取有内容的行树,二者相减获取一个文本的空行数.
for /f "delims=:" %%a in ('findstr /n . test.txt') do set m=%%a
for /f "delims=:" %%a in ('findstr . test.txt^|findstr /n .') do set n=%%a
set /a emptyline=%m%-%n%
echo 空行数:%emptyline%

2008-1-29 15:58
查看资料  发短消息 网志   编辑帖子  回复  引用回复
suntb
高级用户





积分 581
发帖 277
注册 2006-12-23
状态 离线
『第 2 楼』:  

findstr /n . test???

这个test应该是文本的文件名吧?

2008-1-29 23:54
查看资料  发短消息 网志   编辑帖子  回复  引用回复
dinfli
初级用户




积分 180
发帖 82
注册 2007-1-11
状态 离线
『第 3 楼』:  

我不知道这个findstr命令。。不过。才看了下。。意思和楼主说的差不多。。楼主可以自已动手实验下!



好爱你哦。。。老婆
2008-1-30 01:57
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tempuser
高级用户





积分 547
发帖 261
注册 2006-4-15
状态 离线
『第 4 楼』:  

为什么没人回复呢?我很迷惑啊!

2008-1-30 08:47
查看资料  发短消息 网志   编辑帖子  回复  引用回复
plp626
银牌会员

钻石会员


积分 2278
发帖 1020
注册 2007-11-19
状态 离线
『第 5 楼』:  

这个.是不包含回车符的,所有findstr . test.txt 打印的是非空行,如果某行是回车符它会视而不见. 加了参数/n后,它会给输出结果匹配上行号,这个行号自然是test.txt里的行号.
管道符|的作用是将前面的输出结果作为后面命令的操作对象,ps:那个转义字符^在for命令的"set"里才用,单独用findstr . test.txt^|findstr /n . 会出错.
..... ('findstr . test.txt^|findstr /n .') .....
用管道符的作用这个还是可以理解的,这句的作用就是打印非空行的行号,但是这个行号已经不是test.txt里的行号了,而是findstr . test.txt输出结果在提示符下的行号,
所以这个结果最后一行的行号数就是test.txt的非空行数.
ps:
楼主自己的帖子为什么都不仔细看呢,明明有简洁的代码,要学这个冗长,绕弯子的代码?
echo 空行数为:
findstr /v . test.txt|find /v /c ""
http://www.cn-dos.net/forum/viewthread.php?tid=37313&fpage=1&highlight=###

2008-1-30 09:56
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tempuser
高级用户





积分 547
发帖 261
注册 2006-4-15
状态 离线
『第 6 楼』:  



  Quote:
Originally posted by plp626 at 2008-1-30 09:56:
这个.是不包含回车符的,所有findstr . test.txt 打印的是非空行,如果某行是回车符它会视而不见. 加了参数/n后,它会给输出结果匹配上行号,这个行号自然是 ...

哈哈,说的对!但还是不明白?
findstr /v . test.txt
应该是将test.txt的空行结果作为|的输出,那么
find /v /c ""又怎么理解呢?
/V        显示所有未包含指定字符串的行。
/C        仅显示包含字符串的行数。

2008-2-1 10:53
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: