gpt4 book ai didi

sed - 从文本中删除一种字符串?

转载 作者:行者123 更新时间:2023-12-02 05:37:57 25 4
gpt4 key购买 nike

我有类似的行,我想删除第一个 ... 行,不是唯一的行 http://www.filefactory.com/文件/a181d18/n/...nimal_2010_.rar.

我考虑相似行,直到第二个到达... 我想删除第二个相似行。我该怎么办?

http://rapidshare.com/files/152133956/2005_-_Candlemass.part1.rar (not delete)
http://rapidshare.com/files/152133956/2005...emass.part1.rar --> similar (delete)

http://www.filefactory.com/file/a181d18/n/...nimal_2010_.rar -->unique (not delete)

http://www.shragle.com/files/9baa908b/Bvdub-The_First_Day-%2528HN031%2529-2012.rar(not delete)
http://www.shragle.com/files/9baa908b/Bvdu...1%2529-2012.rar --> similar (delete)

我在 Windows 上使用 sednotepad++

我尝试使用这个正则表达式:

Find what:         ((?<=\n)|^)([^\n]{40})([^\n]*\n)(.*\n)?\2[^\n]*($|\n)
Replace with: \2\3\4

它可以工作,但前提是这些行是一行一行的,但我也会有一个正则表达式,我以随机顺序检测这种类型的字符串。可能吗?

最佳答案

这可能对你有用(GNU sed):

 sed ':a;$!N;/^\([^\n]*\)[^\n]*\n\1\.\.\./s/\n.*//;ta;P;D' file

解释:

  • :a 循环地名持有者
  • $!N 在当前行添加一个换行符,然后添加下一行,除非最后一行。
  • /^\([^\n]*\)[^\n]*\n\1\.\.\./ 查找接近重复的行。
  • s/\n.*// 删除上一行。
  • ta 如果最后一个替换为 true goto a
  • P 在模式空间中打印第一行。
  • D 删除模式空间中的第一行(除非为空,否则不获取下一行)

要匹配随机排序的字符串,请转向 awk。

awk '/\.\.\./{o=$0;sub(/\.\.\..*/,"");a[o]=$0;next}{b[$0]}END{for(x in a){for(y in b){if(y ~ a[x]){delete a[x]}}}for(x in a)print x;for(x in b)print x}' file 

关于sed - 从文本中删除一种字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11400576/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com