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

[文本处理] 批处理如何删除文本里的重复行(相同行只保留一条)?

本帖最后由 pcl_test 于 2016-8-5 23:14 编辑

文本里的内容是按一行一行的来书写的,形如
1
2
3
4
5
6
7
1
3


很显然里面有重复行,想让删除重复行,比如上面1和3是重复的,把这2个重复了的删除掉
1
2
3
4
5
6
7
99长寿网 http://www.99sui.com.cn

本帖最后由 pcl_test 于 2016-8-6 00:43 编辑

第三方gawk
http://www.bathome.net/s/tool/index.html?key=gawk
  1. #*&cls&dir /a-d/b "文本.txt"|gawk -f "%~f0"&pause&exit
  2. BEGIN{
  3.     while(getline file>0){
  4.         delete map;delete a;s="";
  5.         while(getline<file>0){
  6.             if($0!~/^[ [:space:]]*$/){
  7.                 if(!map[$0]){s=s$0"\n";map[$0]++;}
  8.             }
  9.         }
  10.         match(file, /(.+\\)?([^\\]+)/, a);
  11.         print s>a[1]"New_"a[2]
  12.     }
  13. }END{print "Done"}
复制代码

TOP

  1. //&cls&dir /a-d/b "文本.txt"|cscript -nologo -e:jscript "%~f0"&pause&exit
  2. var fso = new ActiveXObject('Scripting.Filesystemobject');
  3. while(!WSH.StdIn.AtEndOfStream){
  4.     try{
  5.         var file = WSH.StdIn.ReadLine();
  6.         var text = unique(file);
  7.         var f = file.replace(/(.+\\)?([^\\]+)/, '$1New_$2');
  8.         fso.CreateTextFile(f, 2).Write(text);
  9.     }catch(e){}
  10. }
  11. WSH.echo('Done');
  12. function unique(file){
  13.     var f = fso.OpenTextFile(file, 1), s='', map={};
  14.     while(!f.AtEndOfStream){
  15.         var line = f.ReadLine();
  16.         if(!/^[ \s]*$/.test(line)&&!map[line]){s+=line+'\r\n';map[line]=1}
  17.     }
  18.     f.Close();
  19.     return s
  20. }
复制代码

TOP

  1. @echo off
  2. for /f "delims=" %%a in ('dir /a-d/b "文本.txt"') do (
  3.     (for /f "delims=" %%b in ('type "%%a"') do (
  4.         if not defined #%%b (echo;%%b&set "#%%b=1")
  5.     ))>"%%~dpaNew_%%~nxa"
  6. )
  7. pause
复制代码

TOP

返回列表