中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-09-15 12:14
47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,268 会员排行
DOS批处理 & 脚本技术(批处理室) » 如何显示文件的最后一行?
可打印版本  4,826 / 25
第1楼 wingofsea 发表于 2006-05-24 15:22
初级用户 发帖 34 积分 124
如何显示文件的最后一行?
如何写batch文件或者使用dos命令显示 文件的最后一行?
如:
showLastLine.bat samle.txt

"this is the last line of sample file."
第2楼 vvillsort 发表于 2006-05-24 16:43
新手上路 发帖 7 积分 14
@echo off
set a=0
for /f %%a in (你要搜索的文件.txt) do set a=%%a
echo %a%
第3楼 3742668 发表于 2006-05-24 19:04
荣誉版主 发帖 718 积分 2,013
灌个水,楼上的你是willsort兄的fans?
第4楼 Scott0902 发表于 2006-05-24 22:52
中级用户 发帖 237 积分 466
vvillsort 莫非是 willsort 的马甲?
第5楼 willsort 发表于 2006-05-24 23:44
元老会员 发帖 1,512 积分 4,432
Re vvillsort:

你的代码思路我认同,只是增补一些细节。但即使如此,它仍然无法处理一些特殊的情况,比如当最后一行为空行时,比如此行含有某些“>|<”之类的特殊字符时。

如果楼主没有严格的需要,你的代码应该足够了。但是,我们可以将如何禁止for忽略空行以及如何实现原文echo作为研究题目,提高我们的水平,增加代码的质量。

第6楼 vvillsort 发表于 2006-05-25 08:41
新手上路 发帖 7 积分 14
YES,三楼和四楼回答正确,我就是willsort传说中的粉丝 .......................哈哈哈
第7楼 Climbing 发表于 2006-05-25 10:00
铂金会员 发帖 2,753 积分 6,962 来自 河北保定
楼主没有限定不使用第三方工具,所以如果用sed来实现会更简单。

sed -ne "$p" sample.txt

"$p"表示打印最后一行,-n表示不显示其它内容,-e表示执行后面的脚本。
第8楼 jawbin 发表于 2006-05-25 11:35
高级用户 发帖 444 积分 994
晕倒....
第9楼 wingofsea 发表于 2006-05-25 14:20
初级用户 发帖 34 积分 124
谢谢大家,学到了很多东西,多谢:)最近要写一些脚本,发现自己对这块还特别不了解,学习中。。。再次感谢
第10楼 Climbing 发表于 2006-05-25 16:33
铂金会员 发帖 2,753 积分 6,962 来自 河北保定
Originally posted by jawbin at 2006-5-25 11:35:
晕倒....

你晕倒什么?
第11楼 willsort 发表于 2006-05-25 16:43
元老会员 发帖 1,512 积分 4,432
Re Climbing:

wingofsea 在顶楼已提出“写batch文件或者使用dos命令”,除非兄认为第三方工具也属于DOS命令。当然,你的回复很有用,不仅楼主受益,我也进一步巩固了sed的脚本基础。对兄表示感谢!
第12楼 Climbing 发表于 2006-05-25 19:03
铂金会员 发帖 2,753 积分 6,962 来自 河北保定
Re wil兄:

哈哈,我一向认为凡是能在dos下运行的命令就是dos命令,非局限于只有微软提供的DOS命令。我的原则就是:甭管黑猫白猫,能抓老鼠就是好猫。技术穷根究底固然重要,非唯此而不精,但在工作上则是以解决问题为第一要务。

以兄的水平,sed的这点儿小猫腻对你实在是太简单了,我是班门弄斧,见笑见笑。你说话现在水平越来越高了,到底有多高,怎么也得有十层楼那么高~~~~
第13楼 3742668 发表于 2006-05-25 19:12
荣誉版主 发帖 718 积分 2,013
如果只是纯粹地显示最后一行的话,这样几条命令无疑是效率高,容错好的:

其中的24表示屏幕的高度-1。
个人认为在处理文本内容方面,用VBS要比BAT合适得多。
第14楼 fan927 发表于 2006-05-25 19:34
初级用户 发帖 31 积分 82
Originally posted by Climbing at 2006-5-25 10:00:
楼主没有限定不使用第三方工具,所以如果用sed来实现会更简单。

sed -ne "$p" sample.txt

"$p"表示打印最后一行,-n表示不显示其它内宠...



Climbing大侠,
这条命令如果遇到以空格的结尾是无效的,需要这么写:
sed "/^$/d" sample.txt|sed -ne "$p"
其中,要先用 " /^$/d" 过虑一下空行,让后再执行你这条命令.
班门弄斧了.
第15楼 Climbing 发表于 2006-05-25 22:13
铂金会员 发帖 2,753 积分 6,962 来自 河北保定
Re fan927:

多谢指正,只不过楼主要求显示最后一行,并没有说要过滤空行,当然,空行也算是最后一行,我是这么理解的,嘿嘿~~~

而且,似乎用你的方法也只能过滤空行,如果一行中有若干空格也是无法过滤的,所以,似乎这样更为妥当:
sed "/^ *$/d" sample.txt | sed -ne "$p"
1 2  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023