标题: [文本处理] 批处理如何删除文本中同一行里以指定字符分隔开来的多余的相同的字段/列 [打印本页]
作者: daohe 时间: 2013-4-12 11:22 标题: 批处理如何删除文本中同一行里以指定字符分隔开来的多余的相同的字段/列
本帖最后由 pcl_test 于 2016-11-19 23:33 编辑
a.txt有1万行左右, 每一行都包含几个图片地址, 可能是jpg,gif,png, 并且有的会带 问号? 逗号, 大括号{} 连字符- 下划线_ 句号. 空格 等特殊符号
需要删除每一行当中重复的图片地址
比如:
http://www.a.com/b/c.jpg|||http://www.a.com/b/d.jpg|||http://www.a.com/b/c.jpg 处理后得到 http://www.a.com/b/c.jpg|||http://www.a.com/b/d.jpg
每一行的图片都用三条竖线符号||| 分割
下面举例
a.txt
http://www.a.com/b/c.jpg|||http://www.a.com/b/d.jpg|||http://www.a.com/b/c.jpg
http://www.a.com/b/e.jpg|||http://www.a.com/b/c.jpg
http://www.a.com/b/f.jpg|||http://www.a.com/b/f.jpg
http://www.a.com/b/c.jpg
http://www.a.com/b/d.jpg
处理后得
b.txt
http://www.a.com/b/c.jpg|||http://www.a.com/b/d.jpg
http://www.a.com/b/e.jpg|||http://www.a.com/b/c.jpg
http://www.a.com/b/f.jpg
http://www.a.com/b/c.jpg
http://www.a.com/b/d.jpg
求VBS,
批处理经常会出现莫名的错误, 比如会删除http: 只留下//后面的文本
作者: apang 时间: 2013-4-12 15:21
- Set fso = CreateObject("Scripting.FileSystemObject")
- Set file = fso.OpenTextFile("a.txt",1)
-
- Do Until file.AtEndOfStream
- strLine = file.ReadLine
- If strLine <> "" Then
- strURL = strURL & GetURL(Split(strLine,"|||")) & vbCrLf
- End If
- Loop
-
- fso.CreateTextFile("b.txt",True).Write strURL
- MsgBox "OK"
-
- Function GetURL(ar)
- For i = 0 to UBound(ar)
- If InStr(LCase(str),LCase(ar(i)) & "|||") = 0 Then
- str = str & ar(i) & "|||"
- End If
- Next
- GetURL = Left(str,Len(str)-3)
- End Function
复制代码
作者: CrLf 时间: 2013-4-12 16:16
- sed "s/|||/\n/g" a.txt|sort|uniq
复制代码
作者: BAT-VBS 时间: 2013-4-12 21:29
批处理经常会出现莫名的错误, 比如会删除http: 只留下//后面的文本
这个不能怪批处理,只能怪写批处理的人水平还不到家。
作者: terse 时间: 2013-4-13 00:07
GAWK 练手- gawk -F^| "{for(i=1;i<=NF;i++)if($i>0)if(a[NR$i]<1){v[NR]=v[NR](v[NR]?FS FS FS:\"\")$i;a[NR$i]++}print v[NR]}" A.txt>b.txt
复制代码
作者: pcl_test 时间: 2016-11-19 23:42
- rem win7及以上系统运行
- powershell -c "gc '文本.txt'|%%{($_.trim() -split '\|+' |group|%%{$_.Name}) -join '|||'}"
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |