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

[文本处理] 批处理将文本中每行第一个指定字符前的字符串相同的行输出到以该字符串命名的文本里

本帖最后由 pcl_test 于 2016-10-14 13:46 编辑

14131370@TCAC [email]DFE@T7G0345444_ABCE1403240013200.txt[/email]@ 14365184010  3243 3243 DFSFE 720 5 13 12 9 47 152 297 54 64 32 32
14131370@TCAC [email]TTT@AEG0342344_LOKIJ1403343313200.txt[/email]@ 14363134310  3243 3243 CCFEF 720 5 13 13 9 47 145 297 50 64 32 33
14131310@TCAC [email]AJUE@T7G0343954_ABCE1403240013200.txt[/email]@ 14365485070  3243 3243 FDSFDF 720 5 23 12 9 47 144 297 52 64 32 32
4131370@EEAB2 [email]THF@T7G0345334_ABCE1403240013200.txt[/email]@ 14069188010  3243 3243 CCFEF 720 5 13 12 9 47 143 297 10 64 32 32

第一个@前面的数字 做为关键字  很明显结果是 14131370  14131310   4131370
然后针对这3个关键字 建立3个新文本文件  文件名就取上面这3个数   然后把关键字相同的行剪切到各自对应的文本文件里

里面需要注意的是关键字的完整匹配 14131370和4131370   有可能会混淆

文件有500多万行 请会的朋友帮帮忙

  1. @echo off
  2. ::gawk下载地址http://batch-cn.qiniudn.com/tool/gawk.exe
  3. gawk -F "@" "{print $0>>$1\".txt\"}" "测试.txt"
  4. echo;完成
  5. pause
复制代码

TOP

纯P
  1. @echo off
  2. for /f "tokens=1* delims=@" %%i in (测试.txt) do (
  3.     >>%%i.txt echo;%%i@%%j
  4. )
  5. pause
复制代码
bat+js
  1. @if(0)==(0) echo off & cscript -NoLogo -E:JScript %0 <测试.txt & pause & exit & @end
  2. var fso = new ActiveXObject("Scripting.FileSystemObject")
  3. var re = /(.*?)@.*/;
  4. while (!WScript.StdIn.AtEndOfStream){
  5.     var str = WScript.StdIn.ReadLine();
  6.     var filename = str.replace(re,'$1') + ".txt"
  7.     var f = fso.OpenTextFile(filename,8,true);
  8.     f.WriteLine(str);
  9.     f.Close()
  10. }
复制代码

TOP

回复 2# pcl_test


    print $0 还可简写成 print

TOP

回复 5# CrLf


    感谢指点

TOP

返回列表