Board logo

标题: [文本处理] [已解决]批处理删除并提取重复行问题。 [打印本页]

作者: 每天几分    时间: 2015-3-7 23:53     标题: [已解决]批处理删除并提取重复行问题。

本帖最后由 每天几分 于 2015-3-9 14:03 编辑

额,跟前2天发的帖子差不多,那个是汉字在前面,现在这个是字母在前面。
  1. kb 只
  2. kb 吧
  3. kbb 冀
  4. kbb 吡
  5. kbb 喈
  6. kbd 卟
  7. kbd 只
  8. kbd 叭
  9. kbd 吩
  10. kbd 呗
  11. kbd 员
  12. kbl 勋
  13. kbn 嘤
  14. kbp 邶
  15. kbp 郧
复制代码
文本如上,不用排序,如果每行的3个字母跟下两行的3个字母重复,则删除并提取出来,最终输入如下2个文本。
  1. kb 只
  2. kb 吧
  3. kbl 勋
  4. kbn 嘤
  5. kbp 邶
  6. kbp 郧
复制代码
  1. kbb 冀
  2. kbb 吡
  3. kbb 喈
  4. kbd 卟
  5. kbd 只
  6. kbd 叭
  7. kbd 吩
  8. kbd 呗
  9. kbd 员
复制代码

作者: CrLf    时间: 2015-3-8 00:17

powershell:
  1. $group = Get-Content a.txt | Group-Object {($_ -Split " ")[0]}
  2. $group | ForEach-Object {
  3.    if($_.Count -ge 3){
  4.       $_.Group >大等3.txt
  5.    } else {
  6.       $_.Group >小于3.txt
  7.    }
  8. }
复制代码

作者: 每天几分    时间: 2015-3-8 09:22

回复 2# CrLf


    不懂用这个powershell啊。。
作者: cobat    时间: 2015-3-8 10:56

本帖最后由 cobat 于 2015-3-8 11:56 编辑

改了下apang的代码
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f %%a in ('type 1.txt^&echo,') do (
  4.     if "%%a" neq "!b!" (
  5.         if !n! geq 3 set s=!s! !b!
  6.         set n=1
  7.     ) else set/a n+=1
  8.     set b=%%a
  9. )
  10. findstr /v "!s!" 1.txt>2.txt
  11. findstr "!s!" 1.txt>3.txt
  12. pause
复制代码

作者: pcl_test    时间: 2015-3-8 13:58

回复 3# 每天几分
把CrLf 的代码中的两个输出语句中的>改为>>
把a.txt(字库文件)放在C盘根目录下
使用powershell的几种方法
方法一、点开开始菜单->运行,输入powershell,确定(或者在命令提示符里键入powershell,回车) ->键入cd C: ,回车 ->把代码复制粘贴进去,按两次回车,在C盘根目录下就会生成“大等3.txt”和“小于3.txt”两个文件
方法二、点开开始菜单->所有程序 ->附件 ->Windows PowerShell ,这里有种方式:1、点击进入Windows PowerShell,余下步骤同方法一 2、点击进入Windows PowerShell ISE,上框同方法三,中框为反馈信息,下框同方法一
方法三、进入powershell,键入Set-ExecutionPolicy RemoteSigned ,回车,键入y,回车,把代码用记事本另存为xxx.ps1脚本文件,选中并右键xxx.ps1脚本文件 ->使用PowerShell运行
作者: pcl_test    时间: 2015-3-9 02:55

本帖最后由 pcl_test 于 2015-3-9 13:38 编辑

回复 3# 每天几分
问题得到解答以后在标题最前面注明[已解决]
http://www.bathome.net/thread-3473-1-1.html




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