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

[文本处理] 批处理如何删除文本中同一行里以指定字符分隔开来的多余的相同的字段/列

本帖最后由 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: 只留下//后面的文本

  1. Set fso = CreateObject("Scripting.FileSystemObject")
  2. Set file = fso.OpenTextFile("a.txt",1)
  3. Do Until file.AtEndOfStream
  4.    strLine = file.ReadLine
  5.    If strLine <> "" Then
  6.       strURL = strURL & GetURL(Split(strLine,"|||")) & vbCrLf
  7.    End If
  8. Loop
  9. fso.CreateTextFile("b.txt",True).Write strURL
  10. MsgBox "OK"
  11. Function GetURL(ar)
  12.    For i = 0 to UBound(ar)
  13.       If InStr(LCase(str),LCase(ar(i)) & "|||") = 0 Then
  14.          str = str & ar(i) & "|||"
  15.       End If
  16.    Next
  17.    GetURL = Left(str,Len(str)-3)
  18. End Function
复制代码

TOP

  1. sed "s/|||/\n/g" a.txt|sort|uniq
复制代码

TOP

批处理经常会出现莫名的错误, 比如会删除http: 只留下//后面的文本

这个不能怪批处理,只能怪写批处理的人水平还不到家。

TOP

GAWK 练手
  1. 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
复制代码

TOP

  1. rem win7及以上系统运行
  2. powershell -c "gc '文本.txt'|%%{($_.trim() -split '\|+' |group|%%{$_.Name}) -join '|||'}"
  3. pause
复制代码

TOP

返回列表