Как отсортировать URL в оболочке bash, например, имена хостов оцениваются перед именами поддоменов? - PullRequest
0 голосов
/ 03 сентября 2018

Мне дают файл (обычно содержимое grep), который содержит один URL на строку.

Я ищу способ сортировки URL, например:

  1. Сортировка по имени хоста
  2. Сортировка по имени субдомена
  3. Сортировать по пути

Вот пример файла, содержащего то, что нужно отсортировать:

www.example.com

www.my-website.com

www.example.org

my-website.com

www.my-website.org

И как бы это было отсортировано:

www.example.com

www.example.org

my-website.com

www.my-website.com

www.my-website.org

На данный момент я использую решение, которое является довольно неоптимальным, потому что сначала я сортирую по домену верхнего уровня с помощью

... | rev | sort -u | rev
# notice the -u flag in the sort, it is optional but appreciated

Следует сказать, что этот программный продукт должен использоваться (предположительно) в двух случаях:

  • При анализе содержимого conf-файлов Httpd (особенно grep-запросов ServerName-s и ServerAlias-es и передачи их в операции DNS-запросов)

  • При анализе результатов некоторого веб-сканирования (в основном рекурсивного wget, подаваемого на сканер Flex для извлечения URL-адресов)

В обоих случаях большинство URL-адресов связаны друг с другом.

Как я могу "умно" отсортировать эти URL в bash?

1 Ответ

0 голосов
/ 03 сентября 2018

Поставьте точку перед именами хостов без www с помощью sed:

$ cat dom.txt |sed -e 's/^\([^.]*\.[^.]*\)$/.\1/'|sort -t . -k2|sed -e 's/^\.//'
www.example.com
www.example.org
my-website.com
www.my-website.com
www.my-website.org
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...