标题: [文本处理] [已解决]批处理如何判断txt最后10行是否包含某些字符串并输出这些行? [打印本页]
作者: zrf0123 时间: 2018-6-30 23:06 标题: [已解决]批处理如何判断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
作者: 狄钦dQ 时间: 2018-7-2 11:51
论坛内已经有好多类似的帖子,楼主自己先搜下,尝试自己解决吧
作者: cfwyy77_bat 时间: 2018-7-2 12:21
个人感觉这种纯P困难,就用python写了个 用不了几行可以搞定。不过大文件没测试 没怎么考虑效率。- import shutil
-
- str1 = "错误"
- str2 = "AutoConfig"
- file = "123.txt"
- file2 = "d:\\456.txt"
- file3 = "d:\\789.txt"
-
- with open(file,encoding="utf-8") as f:
- last10 = "".join(list(f)[-10:])
-
- if str1 in last10 and str2 in last10:
- shutil.copy(file, file2)
- with open(file2,encoding="utf-8") as f:
- flst = list(f)
- last4th6chars = flst[-4][:6] #前6个是 "错误 201"
- with open(file3,"w",encoding="utf-8") as fw:
- for line in flst[-20:]:
- if last4th6chars in line: fw.write(line)
复制代码
作者: Batcher 时间: 2018-7-2 12:38
以顶楼数据为例,提取456.txt的倒数第4行的前6个字符,希望得到的结果是什么?
作者: zrf0123 时间: 2018-7-21 11:29
回复 3# cfwyy77_bat
谢谢回复,已经解决!
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |