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

[文本处理] 批处理如何删除txt中每行开头指定字符前的字符串重复出现次数超过指定次数的行?

本帖最后由 pcl_test 于 2016-7-7 22:42 编辑

huangbaohua|1979601521huang
huangbaohua|1979601521huang
857084682|5678967890
lapo5363|466742517
sishenlaile|yytl1103
优雅先生|1986315
优雅先生|198631215
优雅先生|19812631215
优雅先生|1981231aaa6315
优雅先生|1986312342345
优雅先生|1986315

雨姬|681122
前度|19840924

我就是想吧一个文本内,“|”前的内容超过5行的内容,删除掉

如上内容  优雅先生,优雅先生超过5行,就是想将  优雅先生的那行内容全部删除

最好就是文本1 处理后,导出为 文本2

回复 19# ShowCode


    如果是只留下纯字母的,不留数字和字母加数字的,改怎么改代码,感谢

TOP

回复 18# Rasm


    你的txt文件是UTF-8编码格式,先转换成ANSI再执行命令。
测试代码之前请做好备份

TOP

回复 17# ShowCode

这是文本和我写的批处理,中文的过滤不了

TOP

回复 14# Rasm


    把你的txt文件压缩传上来我试试
测试代码之前请做好备份

TOP

  1. for /f "usebackq delims=|" %%i in ("%~f1")do if defined _%%i (set/a "_%%i+=1")else set "_%%i=1"
  2. for /f "usebackq delims=" %%i in ("%~f1")do for /f "delims=|" %%j in ("%%i")do (
  3. echo,总行数:!_%%j! 变量:%%j
  4. rem:这里自行添加各种判断和输出
  5. )
复制代码
这么好的论坛你上哪找,运行测试环境为6.1.7601-64
注:请遵守互联网信息安全,勿用于非法用途

TOP

回复 8# CrLf


    有些为什么不可以呢,中文的有些不行,没有筛选出来

TOP

回复 13# ShowCode


    为什么处理结果是空的

TOP

回复 11# Rasm
  1. gawk -F "|" "{a[$1][n++]=$0}END{for(i in a){x=length(a[i]);if(x>=5&&x<=8){for(j in a[i])print a[i][j]}}}" 1.txt > 2.txt
复制代码
测试代码之前请做好备份

TOP

回复 10# ShowCode


    你把这时间和精力用来做别的事情,会更有意义。
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

回复 10# ShowCode


huangbaohua|19796uang
huangbaohua|197960
huangbaohua|1979601521
huangbaohua|1979601
huangbaohua|191huang
857084682|5678967890
lapo5363|466742517
sishenlaile|yytl1103
优雅先生|1986315
优雅先生|198631215
优雅先生|19812631215
优雅先生|1981231aaa6315
优雅先生|1986312342345
优雅先生|1986315
雨姬|681122
前度|19840924


=================

以上数据为例,希望得到  |  前面的数值重复数在 5-8之间

如:

huangbaohua|19796uang
huangbaohua|197960
huangbaohua|1979601521
huangbaohua|1979601
huangbaohua|191huang
优雅先生|1986315
优雅先生|198631215
优雅先生|19812631215
优雅先生|1981231aaa6315
优雅先生|1986312342345
优雅先生|1986315

TOP

回复 9# Rasm


    以顶楼数据为例,希望得到什么结果?

TOP

回复 8# CrLf


    如果是想删除小于| 前面的重复数,该怎么修改这个代理

比如想删除小于5个|重复数,正好与你这个相反

TOP

大文本建议用第三方神器 gawk,爽爽的:
  1. @gawk -F"|" "FNR!=NR&&ar[$1]<5;{ar[$1]+=1}" 1.txt 1.txt>2.txt
复制代码
1

评分人数

    • Rasm: 感谢您!技术 + 1

TOP

回复 6# xxpinqz


    我处理的文件就是这样的, 你看下

有时候是几万 条

TOP

返回列表