我在用着记事本++和sed在 Windows 上。
我有一个文件文本2000+行但有时我有以下行:
http://www.shragle.com/files/9baa908b/Bvdub-The_First_Day-%2528HN031%2529-2012.rar
http://www.shragle.com/files/9baa908b/Bvdu...1%2529-2012.rar
http://rapidshare.com/files/152133956/2005_-_Candlemass.part1.rar
http://rapidshare.com/files/152133956/2005...emass.part1.rar
http://www.filefactory.com/file/a181d18/n/...nimal_2010_.rar
http://rapidshare.com/files/152136400/2005_-_Candlemass.part2.rar
http://rapidshare.com/files/152136400/2005...emass.part2.rar
http://www.shragle.com/files/3e0f3488/Cesa...testHits2CD.rar
我怎样才能删除这一行?
http://www.shragle.com/files/9baa908b/Bvdu...1%2529-2012.rar
http://rapidshare.com/files/152133956/2005...emass.part1.rar
http://rapidshare.com/files/152136400/2005...emass.part2.rar
我不想删除此行:
http://www.shragle.com/files/3e0f3488/Cesa...testHits2CD.rar
http://www.filefactory.com/file/a181d18/n/...nimal_2010_.rar
因为这些行对我来说是唯一且有效的,所以我只想删除相似的行
类似的行,我想删除...线
http://rapidshare.com/files/152133956/2005_-_Candlemass.part1.rar
http://rapidshare.com/files/152133956/2005...emass.part1.rar
唯一的行,因为在我的文本文件中只出现一次:
http://www.filefactory.com/file/a181d18/n/...nimal_2010_.rar
答案1
如果某行的前 40 个字符与前一行的前 40 个字符相同,则以下命令将删除该行:
Find what: ((?<=\n)|^)([^\n]{40})([^\n]*\n)(.*\n)?\2[^\n]*($|\n)
Replace with: \2\3\4
Search Mode: Regular expression
. matches newline: checked
您可能需要单击Replace All
多次。
怎么运行的
((?<=\n)|^)
检查正则表达式的其余部分是否位于换行符或文件开头之前。([^\n]{40})([^\n]*\n)
匹配一行的前 40 个字符(存储在 中\2
)以及其余部分(存储在 中\3
)。(.*\n)?
是任意数量的行(存储在中\4
)。\2[^\n]*
是以相同的 40 个字符开头的一行。($|\n)
检查正则表达式的其余部分是否后面跟着换行符或文件末尾。
如果遇到这种模式,则会出现类似于的行\2\3
。
通过用 替换全部\2\3\4
,类似的行将被删除。