中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
« [1] [2] »
作者:
标题: 怎么删除文本的最后一行 上一主题 | 下一主题
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 16 楼』:  

8楼的方法确实好,如此简洁..
就是不太理解 findstr 命令的表达式
$ 不是代表行尾吗?那么 findstr $  应该是匹配最后一行啊?怎么会是忽略最后一行呢?
不解,望高人指点.

2007-8-8 17:29
查看资料  发短消息 网志   编辑帖子  回复  引用回复
ansipeter
中级用户

替身



积分 269
发帖 130
注册 2007-3-23
状态 离线
『第 17 楼』:  

他的findstr $ a.txt的意思不就是查找有结束符的行吗?你最后一行只要不按回车不就排除了吗?哎

2007-8-8 17:32
查看资料  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 18 楼』:  

  17楼的解释并没有错,MS对findstr $ 的解释是匹配行尾,实际上,查找的是一行的回车换行符号,这也是使用 findstr ^.*$ 做整行匹配时必须注意的一个问题,稍微不细心就要出错。比如,findstr ^abc$ test.txt 的本意是要查找 abc 这个字符串行,如果 abc 这个字符串行正好位于最后一行的话,就无法匹配到,解决的办法是强制在 test.txt 的最后一行后添加新行,比如说一个空行。



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2007-8-9 10:14
查看资料  发短消息 网志   编辑帖子  回复  引用回复
ansipeter
中级用户

替身



积分 269
发帖 130
注册 2007-3-23
状态 离线
『第 19 楼』:  

知道为什么他这么回答吗?因为我还是个新手,还是个初级用户,如果我是版主,他的回答就会变成“有些不理解,请版主明示”,哎,对于所谓的高级用户我的任何解释都是无效的,要不我说论坛变得越来越拉圾啦,论坛今后的发展令人担忧啊.........

对了,namejm最近学习WMIC怎么样?入门没有?

[ Last edited by ansipeter on 2007-8-9 at 11:32 AM ]

2007-8-9 11:29
查看资料  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 20 楼』:  

  其实,考虑问题需要多转几道弯,虽然别人没有把你想要的答案直接说出来,但是,别人说到了点子上,并没有展开来,这个时候,你就得再做一些推论。

  就你的疑问,解释如下:
  1、因为 findstr $ 的实质是查找行尾的回车换行符号,又因为除了最后一行之外的所有行的行尾都存在这个符号,所以,最后一行之外的所有行都能够查找到;
  2、因为最后一行虽然看起来是完整的一行,但是,它的尾部并没有回车换行符号,而 findstr $ 是以回车换行符号来识别某个字符串是不是一个"行",所以,最后一行不能被识别;
  3、综上所述,findstr $ 只能找到除了最后一行之外的其它行(除了以分号打头的行——注:这个是有条件限制的,如24楼所说的条件),最后一行因为行尾没有回车换行符号而被 findstr $ 忽略了,也就达到了删除最后一行的目的。

[ Last edited by namejm on 2007-8-9 at 02:52 PM ]

   此帖被 +2 点积分    点击查看详情   
评分人:【 1112yuhua 分数: +2  时间:2007-8-13 00:22




尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2007-8-9 12:18
查看资料  发短消息 网志   编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 21 楼』:  

茅塞顿开!
findstr 的表达式是有很多不太好理解啊.
再请问一句,  (除了以分号打头的行)  是什么意识?
我试了一下,分号打头的行也可以匹配啊?
谢了.

[ Last edited by 26933062 on 2007-8-11 at 07:32 AM ]



致精致简!
2007-8-9 14:16
查看资料  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 22 楼』:  

  呵呵,findstr $ 不能查找以分号打头的行,这个是有条件限制的,我忘记说了,是在这样的语句中是不能查找的:for /f "delims=" %%i in ('findstr $ test.txt') ……



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2007-8-9 14:50
查看资料  发短消息 网志   编辑帖子  回复  引用回复
kingyn
初级用户




积分 32
发帖 21
注册 2007-8-22
状态 离线
『第 23 楼』:  

哇,热处理这么复杂呀,让我越学越觉累

2007-8-27 19:41
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lhkyzh
初级用户





积分 34
发帖 12
注册 2006-6-4
状态 离线
『第 24 楼』:  

那么删除最后两行的语句应该怎么写呢?
findstr $ a.txt >>b.txt是很精简,但是不能删除空行。

2008-1-22 23:09
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: