Как проверить папку с текстовыми файлами на наличие повторяющихся URL-адресов

У меня есть папка с *.txt файлами. Я хочу регулярно проверять эти файлы на наличие повторяющихся URL-адресов.

На самом деле, я сохраняю свои закладки в этих файлах, всегда как минимум с двумя строками, например:

www.domain.com
Quite a popular domain name

Как это бывает, я сохраняю тот же URL с другим описанием, например:

www.domain.com
I should buy this domain
Whenever I happen to have enough money for this

Все записи разделены одиночными пустыми строками. А иногда URL-адреса имеют формат уценки:

[domain.com](www.domain.com)

Как мне просканировать папку на наличие повторяющихся URL-адресов?

Единственное решение, которое я нашел до сих пор, это cat в сочетании с его uniq каналом:

cat folder/* |sort|uniq|less > dupefree.txt

Проблема в следующем:

  1. Это проверяет только полные идентичные строки - URL-адреса уценки игнорируются, а связанные комментарии теряются.
  2. Я не хочу выводить очищенный текстовый файл, мне просто нужна подсказка, какие URL-адреса дублируются.

Как я могу сделать надлежащую проверку дубликатов?


person mcbetz    schedule 10.04.2014    source источник


Ответы (1)


Вот исходный файл, который я сделал из вашего описания

cat file

www.domain.com
Quite a popular domain name

www.domain.com
I should buy this domain
Whenever I happen to have enough money for this
All entries are separated by single blank lines. And sometimes the URLs are in markdown format:

[domain.com](www.domain.com)
How would I crawl the folder for duplicate URLs?

Использование awk для экспорта дубликата доменного имени:

awk 'BEGIN{FS="\n";RS=""}
{ if ($1~/\[/) { split($1,a,"[)(]"); domain[a[2]]++}
  else {domain[$1]++}
}
END{ for (i in domain) 
      if (domain[i]>1) print "Duplicate domain found: ",i
    }' file

Duplicate domain found:  www.domain.com
person BMW    schedule 10.04.2014