Eu tenho um arquivo de texto de código-fonte de 3000 linhas de uma página. Como posso extrair URLs específicos semelhantes aos abaixo e excluir o código-fonte restante?
https://d17nygptf7ayu.cloudfront.net/photos/0b1983ccf6bb5674f93b.jpg
Como eu fui através do código, existem 60 links semelhantes ao link acima com apenas alteração nos nomes *.jpg.
como iniciante, tenho menos ideia por onde começar e qual ferramenta devo usar na linha de comando do linux. Também como posso fazer isso no notepad ++?
Regex eu inventohttps\://d17nygptf7ayu\.cloudfront\.net/photos/(?:(?!\.jpg)(?:.|\n))*\.jpg
Essa expressão regular corresponderá aos URLs que você deseja:
O
[0-9a-f]
acima corresponde a qualquer dígito hexadecimal minúsculo e{20}
corresponde exatamente a 20 deles.A ferramenta Linux clássica e muito útil que pesquisa com base em expressões regulares é o
grep
. Um geralmente usa o-E
sinalizador, o que faz com que ele use expressões regulares estendidas. O-o
sinalizador faz com que ele produza apenas a string correspondente. (Normalmentegrep
produziria a linha inteira que contém a string correspondente.) Para uma descrição completa de como usargrep
, digiteman grep
.Então, para gerar uma lista de todos os URLs correspondentes:
grep -Eo 'https\://d17nygptf7ayu\.cloudfront\.net/photos/[0-9a-f]{20}.jpg' long_text_file.html >output_list_of_urls.txt
Observe que, se o arquivo que você listou no lugar
output_list_of_urls.txt
já existir, ele será substituído. Observe também que a expressão regular está entre aspas. Se seus nomes de arquivo de entrada ou saída contiverem espaços ou outros caracteres especiais, eles também precisam de aspas.