![]() |
中国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: 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 |