标题: [问题求助] [已解决]gawk 如何识别文本中相同行 并在末尾加数字 [打印本页]
作者: daohe 时间: 2015-7-12 15:51 标题: [已解决]gawk 如何识别文本中相同行 并在末尾加数字
本帖最后由 daohe 于 2015-7-12 17:16 编辑
一个a.txt,
有一百万行数据, 里面有30% 重复行
碰到重复行后, 在重复的第二行 第三行....第N行, 并在末尾标上一个空格和一个数字, 1, 2, 3, 4,...
举例说明
a.txt 内容如下
aaa
bbb
aaa
ddd
aaa
fff
bbb
处理后变成
aaa
bbb
aaa 1
ddd
aaa 2
fff
bbb 1
作者: CrLf 时间: 2015-7-12 16:40
- gawk "ar[$0]++{$0=$0 FS ar[$0]-1}1" a.txt
复制代码
作者: daohe 时间: 2015-7-12 17:15
回复 2# CrLf
谢谢, 我在后面加了 >b.txt 才能看到结果
所以代码是这样的- gawk "ar[$0]++{$0=$0 FS ar[$0]-1}1" a.txt >b.txt
复制代码
作者: pcl_test 时间: 2015-7-12 22:44
本帖最后由 pcl_test 于 2015-7-12 22:53 编辑
发个vbs- Dim fso,File1,File2,str,Dict
- Set Dict = CreateObject("Scripting.Dictionary")
- Set fso = CreateObject("Scripting.FileSystemObject")
- Set File1 = fso.OpenTextFile(".\测试.txt", 1)
- Set File2 = fso.CreateTextFile(".\结果.txt", 2 ,False)
- Do While File1.AtEndOfStream <> True
- str = File1.ReadLine
- If Dict.Exists(str) <> True Then
- File2.WriteLine str
- Dict.Add str, 1
- Else
- File2.WriteLine str&" "&Dict.Item(str)
- Dict.Item(str) = Dict.Item(str)+1
- End If
- loop
- File1.Close
- File2.Close
- Dict.RemoveAll
- Set Dict = Nothing
- MsgBox "完成!"
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |