awk '{ if ($1 != $2 ) print $1" "$2; }' file
Basta substituir o arquivo pelo arquivo apropriado.
Ou como @manatwork mencionada nos comentários e mais simples
awk '$1!=$2' file
Eu tenho um arquivo contendo dois caminhos em cada linha. Quero remover as linhas que contêm o mesmo caminho duas vezes.
Eu trabalho no Linux e no Solaris. Eu gostaria de um one-liner em sed ou awk ou perl.
Exemplo de arquivo de entrada:
/usr/lib/libgmp.so.3.3.3 /usr/lib/libgmp.so.3.3.3
/usr/lib/libxslt.so.1.1.17 /usr/lib/libxslt.so.1.1.17
/usr/lib/sse2/libgmp.so.3.3.3 /usr/lib/sse2/libgmp.so.3.3.3
/usr/local/swp-tomcat-6.0/lib/commons-logging-1.1.1.jar /usr/local/swp-tomcat-6.0/lib/commons-logging-1.1.1.jar
/usr/share/doc/libXrandr-1.1.1 /usr/share/doc/libXrandr-1.1.1
/usr/share/doc/libxslt-1.1.17 /usr/share/doc/libxslt-1.1.17
/etc/3.3.3.255 /etc/172.17.211.255
/etc/1.1.1.255 /etc/172.17.213.255
Resultado esperado:
/etc/3.3.3.255 /etc/172.17.211.255
/etc/1.1.1.255 /etc/172.17.213.255
Você pode expressar texto repetido em regexps do grep
(isso é uma extensão da noção matemática de expressão regular).
grep -v '^ *\([^ ][^ ]*\) * *$'
[^ ][^ ]*
corresponde a um ou mais caracteres não espaciais. Os parênteses de barra invertida tornam isso um grupo e significa "o mesmo texto do primeiro grupo".
Isso pode funcionar para você (GNU sed):
sed -r '/(\S+)\s/d' file
Tags text-processing awk sed