Você pode simplesmente ignorar a verificação e adicionar a linha de par de qualquer maneira, depois canalizar a saída para sort -u
:
sed '/ www./{ # if line matches www.
h # copy it over the hold buffer
s// / # remove the www. part
G # append the original line to the modified one
}
//!{ # if line doesn't match www.
h # copy it over the hold buffer
s/ / www./ # add the www. part
G # append the original line to the modified one
}
' infile | sort -u
Isso pressupõe que as duas colunas (IP e URL) são delimitadas por um espaço. Ajuste o regex, se necessário.
Ou, com zsh
, você pode ler as linhas em uma matriz, remover a www.
parte onde está presente e armazenar o resultado em uma matriz de elementos exclusivos, em seguida, imprimir cada elemento duas vezes, uma vez como está e uma vez com o www.
parte adicionada:
mylist=(${(f)"$(<infile)"})
for i (${(u)mylist[@]/ www./ }) printf '%s\n' ${i} ${i/ / www.}