Как сделать это в единственной команде на Ubuntu 16.04?

У меня есть файл 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
¾= 
3
задан 23 May 2017 в 15:39

2 ответа

Решение для 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 это.

6
ответ дан 1 December 2019 в 13:24

Что относительно просто получают все между 'com' & 'www'? И распечатайте их 'sed'

sed -ne 's/com\.\(.*\)\.www\(.*\)/www.\1.com/p' infile

, Это проигнорирует две строки Вашего входного образца, который не имеет никакого 'www'.

1
ответ дан 1 December 2019 в 13:24

Другие вопросы по тегам:

Похожие вопросы: