Tome, por exemplo, esses dois arquivos:
$ cat file1
http://google.com
example.com
http://foobar.org
$ cat file2
example.com
google.com
foobar.org
unique.url
Gostaria apenas de usar uma ferramenta como sed
para remover tudo até a última ocorrência de //
. Além disso, para usar diff
, os dois arquivos precisam ser classificados. Combinando os dois nos dá:
$ diff <(sed 's#.*//##' file1 | sort) <(sort file2)
3a4
> unique.url
Como alternativa, use comm -3
:
$ comm -3 <(sed 's#.*//##' file1 | sort) <(sort file2)
unique.url
Você pode remover o espaço em branco inicial com sed
novamente:
$ comm -3 <(sed 's#.*//##' file1 | sort) <(sort file2) | sed 's/^\s*//'
unique.url
Outra abordagem seria remover o http://
dos dois arquivos e imprimir o que resta, depois passá-lo por uniq -u
, que só imprimirá linhas exclusivas. Como as URLs que estão presentes nos dois arquivos não serão exclusivas, isso só imprimirá as que estão presentes em um dos dois arquivos:
$ sed 's#.*//##' file1 file2 | sort | uniq -u
unique.url