[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]批处理如何判断txt最后10行是否包含某些字符串并输出这些行?

判断一较大文件 123.txt的最后10行:如果含有字符串“错误” 和“AutoConfig”,则把该文件复制到指定位置d:\456.txt;
提取456.txt的倒数第4行的前6个字符,并输出最后20行中包含该6个字符串的所有行到一个文件d:\789.txt
批处理能快速做到这些吗?请大家帮忙,谢谢!

123.txt的内容
信息 2018/6/30 22:13:09 Microsoft-Windows-Kernel-General 1 无
信息 2018/6/30 22:11:10 Microsoft-Windows-Kernel-General 1 无
信息 2018/6/30 22:07:57 Service Control Manager
信息 2018/6/30 22:03:10 Service Control Manager
信息 2018/6/30 22:03:10 Service Control Manager
错误 2018/6/30 22:03:10 Service Control Manager
错误 2018/6/30 22:03:10 Service Control Manager
信息 2018/6/30 22:03:09 Microsoft-Windows-Kernel-General 1 无
信息 2018/6/30 22:03:07 Service Control Manager
信息 2018/6/30 22:03:05 Service Control Manager
信息 2018/6/30 22:03:05 Microsoft-Windows-WLAN-AutoConfig 4000 无
信息 2018/6/30 22:03:05 Service Control Manager
错误 2018/6/30 22:03:05 Service Control Manager
信息 2018/6/30 7:08:02 Service Control Manager
信息 2018/6/30 7:08:02 Service Control Manager
信息 2018/6/30 7:08:00 Microsoft-Windows-Winlogon 7001 -1101
信息 2018/6/30 7:08:00 Service Control Manager
信息 2018/6/30 7:08:00 Microsoft-Windows-WLAN-AutoConfig 4000 无
信息 2018/6/30 7:08:00 Service Control Manager
信息 2018/6/30 7:08:00 Microsoft-Windows-DHCPv6-Client 51046 服务状态事件
错误 2018/6/30 7:08:00 Service Control Manager
信息 2018/6/30 7:08:00 Microsoft-Windows-Dhcp-Client 50036 服务状态事件
信息 2018/6/30 7:08:00 Service Control Manager
信息 2018/6/30 7:08:00 Service Control Manager
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

论坛内已经有好多类似的帖子,楼主自己先搜下,尝试自己解决吧

TOP

个人感觉这种纯P困难,就用python写了个 用不了几行可以搞定。不过大文件没测试 没怎么考虑效率。
  1. import shutil
  2. str1 = "错误"
  3. str2 = "AutoConfig"
  4. file = "123.txt"
  5. file2 = "d:\\456.txt"
  6. file3 = "d:\\789.txt"
  7. with open(file,encoding="utf-8") as f:
  8.     last10 = "".join(list(f)[-10:])
  9. if str1 in last10 and str2 in last10:
  10.     shutil.copy(file, file2)
  11.     with open(file2,encoding="utf-8") as f:
  12.         flst = list(f)
  13.         last4th6chars = flst[-4][:6]    #前6个是  "错误 201"
  14.         with open(file3,"w",encoding="utf-8") as fw:
  15.             for line in flst[-20:]:
  16.                 if last4th6chars in line: fw.write(line)
复制代码

TOP

以顶楼数据为例,提取456.txt的倒数第4行的前6个字符,希望得到的结果是什么?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 3# cfwyy77_bat


    谢谢回复,已经解决!

TOP

返回列表