2

Я использую Notepad ++ и 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 ответ1

1

Следующее удалит строку, если ее первые 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 , эта похожая строка будет удалена.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .