GNU awk (padrão no Ubuntu) - sozinho:
awk -vFPAT='https?:[^\s]+' 'BEGIN {PROCINFO["sorted_in"]="@ind_str_asc"} \
/\w+/{a[]} END{for(i in a) print i}' *.txt
-
Assumindo que todos os arquivos de entrada terminem em .txt ; se não, faça as mudanças necessárias no padrão glob *.txt
-
Variável FPAT define a definição de campo usando Regex, definimos uma porção de registros começando com http com um opcional s depois disso, seguido por : , até o próximo espaço em branco como um campo por o padrão Regex https?:[^\s]+'
-
awk suporta apenas matrizes associativas que não são classificadas por padrão (bem, classificadas de acordo com um hash interno - este é um detalhe de implementação), estamos definindo a ordem de classificação da matriz a de acordo com as strings de índice usando array associativo PROCINFO com a chave sorted_in tendo valor @ind_str_asc by PROCINFO["sorted_in"]="@ind_str_asc" . Se você quiser ordem decrescente, use PROCINFO["sorted_in"]="@ind_str_desc"
-
Finalmente, END{for(i in a) print i} itera sobre os elementos da matriz a e imprime as chaves da matriz classificada.
Se você quiser salvar a saída em um arquivo, por exemplo out.txt :
awk -vFPAT='https?:[^\s]+' 'BEGIN {PROCINFO["sorted_in"]="@ind_str_asc"} \
/\w+/{a[]} END{for(i in a) print i}' *.txt >out.txt
EDITAR:
Se você quiser salvar a saída de cada arquivo processado em um arquivo correspondente com a extensão .txt substituída por .doc , use awk variable FILENAME para obter o nome do arquivo, sub(".txt$", ".doc", FILENAME para fazer o arquivo renomeando e ENDFILE para fazer o processamento da matriz no final do processamento de cada arquivo:
awk -vFPAT='https?:[^\s]+' 'BEGIN {PROCINFO["sorted_in"]="@ind_str_asc"} \
/\w+/{a[]} ENDFILE{sub(".txt$", ".doc", FILENAME); \
for(i in a) print i > FILENAME}' *.txt