标题: [文本处理] 批处理将文本中每行第一个指定字符前的字符串相同的行输出到以该字符串命名的文本里 [打印本页]
作者: necnec1 时间: 2015-5-28 21:06 标题: 批处理将文本中每行第一个指定字符前的字符串相同的行输出到以该字符串命名的文本里
本帖最后由 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多万行 请会的朋友帮帮忙
作者: pcl_test 时间: 2015-5-28 22:22
- @echo off
- ::gawk下载地址http://batch-cn.qiniudn.com/tool/gawk.exe
- gawk -F "@" "{print $0>>$1\".txt\"}" "测试.txt"
- echo;完成
- pause
复制代码
作者: terse 时间: 2015-5-29 14:02
纯P- @echo off
- for /f "tokens=1* delims=@" %%i in (测试.txt) do (
- >>%%i.txt echo;%%i@%%j
- )
- pause
复制代码
bat+js- @if(0)==(0) echo off & cscript -NoLogo -E:JScript %0 <测试.txt & pause & exit & @end
- var fso = new ActiveXObject("Scripting.FileSystemObject")
- var re = /(.*?)@.*/;
- while (!WScript.StdIn.AtEndOfStream){
- var str = WScript.StdIn.ReadLine();
- var filename = str.replace(re,'$1') + ".txt"
- var f = fso.OpenTextFile(filename,8,true);
- f.WriteLine(str);
- f.Close()
- }
复制代码
作者: CrLf 时间: 2015-7-9 01:19
回复 2# pcl_test
print $0 还可简写成 print
作者: pcl_test 时间: 2015-7-9 09:59
回复 5# CrLf
感谢指点
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |