Как это сделать в одной команде на 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 OS. Позвольте мне рассказать вам, что я пробовал:

Сначала я удалил данные после «/», используя следующую команду:

~$ ex -sc '%s/\(\/\).*/\1/ | x' newfile.txt > ddm.txt

И результат как:

[ f3]

Теперь я отменил полный текст в файле, используя решение: https://stackoverflow.com/questions/40467918/how-to-reverse-the-word-in-ubuntu

[d7 ] И получил следующий результат:

    /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, поскольку оно не работает в моей системе.

Пример данных: [ ! d13]

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
¾= 
1
задан 23 May 2017 в 15:39

1 ответ

Как просто получить все между «com» ​​и amp; 'WWW'? И напечатайте их «sed»

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

Это будет игнорировать две строки вашего входного образца, у которого нет «www».

1
ответ дан 23 May 2018 в 04:23
  • 1
    Я не знаю, почему я получаю эту ошибку, когда я использую вашу команду --- 'sed: -e выражение # 1, char 31: неизвестный параметр `s' – Jaffer Wilson 9 November 2016 в 08:54
  • 2
    извините обновлено ... – αғsнιη 9 November 2016 в 09:01
  • 3
    По-прежнему та же ошибка --- sed: -e выражение # 1, char 38: неизвестный параметр `s ' – Jaffer Wilson 9 November 2016 в 09:06
  • 4
    Какова ваша версия sed? Для меня это работает нормально, возможно, попробуйте это sed -ne 's/com\.\(.*\)\.www\(.*\)/www\.\1\.com/p' infile – αғsнιη 9 November 2016 в 13:52

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

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