grep для извлечения строк, содержащих полные доменные имена из файла [закрыто]

Mirando el código fuente , no parece que haya ninguna forma de hacer esto. Zathura simplemente reemplaza $FILEy %con la ruta del archivo antes de ejecutar el comando.

Así que tendrá que usar una solución alternativa de todos modos. Tal vez algo como:

exec sh -c 'xdg-open $(dirname $FILE)'

O:

exec xterm -e 'ranger $(dirname $FILE)'

Realmente se necesitan más citas aquí, pero no sé qué tan bueno es el analizador de Zathura para manejar las comillas.

-1
29.07.2018, 07:57
2 ответа

Ваш вопрос неоднозначен. если ваше определение элемента только для домена, как вы упомянули, чтобы найти их, вы можете использовать:

grep -P "^.[^.]+\.[a-zA-Z]{3}$|^.[^.]+\.[a-zA-Z]{2}\.[a-zA-Z]{2}$" FileName
  • grep -Pиспользуйте регулярное выражение Perl
  • ^.[^.]+начинаться с каждого символа, кроме и не содержать ., как было бы
  • \.[a-zA-Z]{3}$встречается .следует с 3 символами в конце
  • |ИЛИ
  • ^.[^.]+как выше
  • \.[a-zA-Z]{2}встречается 2 символа два раза поперек в конце
3
28.01.2020, 05:07

Учитывая то, как регистраторы распределяют TLD и FLD, это -нетривиальная проблема, которую, я думаю, вы не сможете решить с помощью простых регулярных выражений и инструментов CLI.

Я бы опирался на что-то вроде этого модуля Python,tld. Этот модуль имеет функции get_tldи get_fld. Второй будет печатать домены первого уровня, что вам и нужно.

Пример

$ cat fld.py
#!/bin/python

from tld import get_fld

fldList = []
domList = open("domlist.txt").read().splitlines()
for dom in domList:
  fldList.append(get_fld(dom, fix_protocol=True))

print("\n".join(sorted(set(fldList))))

Пробный запуск:

$./gtld.py
domain.co.uk
domain.com

ПРИМЕЧАНИЕ.:Список доменов находится в файле с именем domlist.txt.

Ссылки

3
28.01.2020, 05:07

Теги

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