Board logo

标题: [文本处理] [已解决]批处理如何提取文本最后几行? [打印本页]

作者: hlzj88    时间: 2016-1-30 09:11     标题: [已解决]批处理如何提取文本最后几行?

因工作需要需监控一记录的最后几行来判断一服务是否正常决定是否需要重启服务,目前不确定要几行数据,需根据实际观察来调整。
通过批处理也能实现只取最后几行,但因文本较大,p运行耗时较长,因此计划用sed来获取最后几行,sed我是门外汉,百度代码测试不成功,因此求助论坛高手
因暂不确定需要几行数据,因此代码最好可以修改。
系统2003  需写入文本
作者: hlzj88    时间: 2016-1-30 09:59

本帖最后由 hlzj88 于 2016-1-30 10:02 编辑

在论坛搜索到这个,算解决问题了,,但还是怕超大
apang 发表于 2015-1-26 09:52

作者: codegay    时间: 2016-1-30 10:47

回复 2# hlzj88


    多大?,文件行数多少?。
作者: hlzj88    时间: 2016-1-30 10:55

回复 3# codegay
8M多 ,还会长大
每行不长,行数没统计
作者: bailong360    时间: 2016-1-30 12:37

第三方tail
  1. 提取倒数两行:tail -n 2 test.txt
复制代码

作者: dizimotong    时间: 2016-1-30 12:55

如果要用sed查看最后几行的话,下面代码给你参考
首先,创建一个名为script.txt的脚本(名字可以自己定)
内容如下:
  1. {
  2. :start
  3. $q
  4. N
  5. 11,$D
  6. b start
  7. }
复制代码
然后,在命令行输入如下命令:
  1. sed -f script.txt YourFileName
复制代码
这样就可以打印最后10行的内容,可以通过修改script.txt中第5行的数字,来决定打印后几行
作者: hlzj88    时间: 2016-1-30 14:38

本帖最后由 hlzj88 于 2016-1-30 14:43 编辑

回复 5# bailong360
其实不介意使用另外的第三方,达到目的就好。但我是连tail都不知道。 谢谢!
回复 6# dizimotong
非常感谢,按你的代码建立了文本和bat,随便找了文本进行测试,没看到效果,因为要输出到文本,略添加输出后,无输出。
因为5楼已经解决了,所以不求甚解。还是感谢!!
不过你这样的sed用法倒是第一次见,要学,先解决问题为主。
要是可以用sed搞定,希望能再上代码,起码完成提问标题所指 用sed
作者: codegay    时间: 2016-1-30 14:49

伸手要代码的反过来教育别人了。
作者: hlzj88    时间: 2016-1-30 17:18

回复 8# codegay
喔  学以致用,有能帮的也帮了,有不会的也是要问的。
作者: pcl_test    时间: 2016-11-10 22:42

本帖最后由 pcl_test 于 2016-11-10 22:48 编辑
  1. rem 提取文本最后10行
  2. powershell -c "(gc '文本.txt')[-10..-1]}"
  3. pause
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2