返回列表 发帖

[问题求助] [已解决]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

gawk "ar[$0]++{$0=$0 FS ar[$0]-1}1" a.txtCOPY

TOP

回复 2# CrLf


    谢谢, 我在后面加了 >b.txt 才能看到结果

所以代码是这样的
gawk "ar[$0]++{$0=$0 FS ar[$0]-1}1" a.txt >b.txtCOPY

TOP

本帖最后由 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 "完成!"COPY

TOP

返回列表