У меня есть файл URL в формате как показано ниже:
com.blendtuts/S
°=
com.blengineering.www/:http
±=
com.blenheimgang.www/le-porsche-museum-en-details/porsche-museum-3
²=
com.blenheimsi
³=
com.blenkov.www/page/media/18/34/376
´=
com.blentwell.www/bookmarks.php/jackroldan/sp
¸=
com.blentwell.www/tags.php/I
Размер файла находится в GigaBytes. Скажите приблизительно 250 ГБ размера файла.
Я пытался инвертировать слова в файле и извлечь только домены из текста. Я пытался сделать его с помощью Ubuntu команды терминала ОС. Позвольте мне сказать Вам, что я попробовал:
Сначала я удалил данные после “/” использование следующей команды:
~$ ex -sc '%s/\(\/\).*/\1/ | x' newfile.txt > ddm.txt
И результат как:
com.blendtuts/
°=
com.blengineering.www/
±=
com.blenheimgang.www/
²=
com.blenheimsi
³=
com.blenkov.www/
´=
com.blentwell.www/
¸=
com.blentwell.www/
Теперь я инвертировал полный текст в файле с помощью решения от: https://stackoverflow.com/questions/40467918/how-to-reverse-the-word-in-ubuntu
И получил следующий результат:
/blendtuts.com
°= /www.blengineering.com
±= /www.blenheimgang.com
²= blenheimsi.com
³= /www.blenkov.com
µ= /www.blentwell.com
¶= /www.blentwell.com
•= /www.blentwell.com
/www.blentwell.com
Но тем не менее проблема не решена. Я хотел бы к тому, как возможно извлечь URL и поместить их в другой файл с помощью Ubuntu. Поскольку Вы видите выше вывода, что все еще я имею, не домен, он имеет обратную косую черту с ним.
Если существует другое решение такой проблемы с помощью какой-либо другой операционной системы, действительно сообщить мне. Я предпочитаю идти с Ubuntu.
Я хотел бы извлечь домены из файла и разделить их в другой файл и что также в соответствующем формате.
Если я получу уникальный домен затем, то это будет отличное решение моего запроса. Иначе я использую команду как:
$ sort filename.txt | uniq > save_to_file.txt
Попытайтесь не дать мне решение с помощью awk команду, поскольку она не работает над моей системой.
Демонстрационные данные:
com.blendschutzrollo.www/d_chefsessel6_Maxx_Chefsessel_mit_Kopfstutze_Chefdrehsessel___Munchen__374
¯=
com.blendtuts/S
°=
com.blengineering.www/:http
±=
com.blenheimgang.www/le-porsche-museum-en-details/porsche-museum-3
²=
com.blenheimsi
³=
com.blenkov.www/page/media/18/34/376
´=
com.blenoir.www/lat
µ=
com.blentwell.www/bookmarks.php/bashment%20jack/re
¶=
com.blentwell.www/bookmarks.php/djcable/rt
·=
com.blentwell.www/bookmarks.php/jackroldan/sp
¸=
com.blentwell.www/tags.php/I
¹=
com.blentwell.www/tags.php/eurot
º=
com.blentwell.www/tags.php/mitarbeiters
»=
com.blentwell.www/tags.php/verw
¼=
com.blenzblog/tag/olympic-w
½=
com.blepharoplastyusa.www/albany-n
¾=
Решение для Perl, адаптируя одно из строковых решений для реверсирования:
$ perl -F/ -anle 'print reverse(split("([^.]*)", $F[0])) if /\./' input
www.blendschutzrollo.com
blendtuts.com
www.blengineering.com
www.blenheimgang.com
blenheimsi.com
www.blenkov.com
www.blenoir.com
www.blentwell.com
www.blentwell.com
www.blentwell.com
www.blentwell.com
www.blentwell.com
www.blentwell.com
www.blentwell.com
blenzblog.com
www.blepharoplastyusa.com
Аргументы:
-F/ -a
создает массив F
из каждой строки входа, разделяющего на /
.-nle
выполняет выражение (-e <expr>
) на каждой строке входа, автоматически не печатая (-n
), при обработке новой строки в конце каждой строки (-l
)/
, и нам только нужна часть перед первым /
, так первый элемент массива F
: $F[0]
. Затем мы разделяем его на .
и инвертируйте каждого из тех и печать, если строка содержит .
.Теперь Вы можете sort -u
это.
Что относительно просто получают все между 'com' & 'www'? И распечатайте их 'sed'
sed -ne 's/com\.\(.*\)\.www\(.*\)/www.\1.com/p' infile
, Это проигнорирует две строки Вашего входного образца, который не имеет никакого 'www'.