标题: [文本处理] [已解决]批处理怎样提取包含关键词的行并保存? [打印本页]
作者: abyssxx 时间: 2021-2-21 13:44 标题: [已解决]批处理怎样提取包含关键词的行并保存?
本帖最后由 abyssxx 于 2021-2-22 17:48 编辑
首先感谢大家!春节快乐!
需要处理a.txt文件
文件内容例如:
西瓜XXXXXX
fffffffff
西瓜苹果xxxxxxxx
bbbbbbbbbbbb
香蕉苹果xxxxxxxx
aaaaaaaaa
ccccccc
葡萄西瓜xxxxxxxxx
葡萄xxxxxxxx
需要分别提取包含 西瓜,苹果,香蕉, 葡萄的行 分别保存到 西瓜.txt 苹果.txt 香蕉.txt 葡萄.txt 中,
但是 西瓜.txt 苹果.txt 香蕉.txt 葡萄.txt 中不能有重复提取的行,如果直接提取就会因为某行里面有两个关键词提取了两次
思路可以提取第一个关键词 西瓜 保存到西瓜.txt
然后删除a.txt里面包含西瓜的行,然后继续提取包含苹果 保存到苹果.txt 然后删除a.txt里面包含苹果的行,继续提取后面的
最后还要保存一个文件,最终数据.txt里面的数据是剔除了关键词的,内容为
fffffffff
bbbbbbbbbbbb
aaaaaaaaa
ccccccc
看了半天教程写了一个好像是可以了,但是不保存空txt文件该怎么写?- @echo off
- set targe=''
- setlocal enabledelayedexpansion
- for /f %%I in (关键词.txt) do (
- findstr "%%I" 数据.txt > "%%I".txt
- findstr /v "%%I" 数据.txt > b.txt
- copy b.txt 数据.txt
- )
- pause
复制代码
作者: xczxczxcz 时间: 2021-2-21 17:14
正则匹配! findstr 小文本适用。
作者: Batcher 时间: 2021-2-22 09:21
回复 1# abyssxx
请举例说明“不保存空txt文件”是什么意思?
作者: qixiaobin0715 时间: 2021-2-22 09:33
本帖最后由 qixiaobin0715 于 2021-2-22 10:49 编辑
有些地方表达的不太清楚,不知下面代码是否准确:
关键词文本一行一个关键词- @echo off
- findstr /v /r /G:关键词.txt a.txt>最终数据.txt
- setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('findstr /r /G:关键词.txt a.txt') do (
- set str=%%a
- set n=0
- for /f "delims=" %%b in (关键词.txt) do (
- if not "!str:%%b=!"=="!str!" (
- set /a n+=1
- if !n!==1 set %%a=true&echo,%%a>>%%b.txt
- if not defined %%a echo,%%a>>%%b.txt&set %%a=true
- )
- )
- )
- pause
复制代码
作者: abyssxx 时间: 2021-2-22 17:41
回复 abyssxx
请举例说明“不保存空txt文件”是什么意思?
Batcher 发表于 2021-2-22 09:21
就是有时候要处理的文本里面没有包含关键词的数据,输出的txt是空的,这种情况就不保存了
作者: abyssxx 时间: 2021-2-22 17:42
回复 3# Batcher
就是有时候要处理的文本里面没有包含关键词的数据,输出的txt是空的,这种情况就不保存了
作者: abyssxx 时间: 2021-2-22 17:47
回复 4# qixiaobin0715
可以用就是要这样的 谢谢
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |