Vou fazer passo a passo (poderia ficar menor) para facilitar o entendimento:
$ cat host_xxvio* > temp
$ cat temp
192.168.0.194 xxvio006
192.168.0.193 xxvio005
192.168.0.192 xxvio004
192.168.0.191 xxvio003
192.168.0.190 xxvio002
192.168.0.189 xxvio001
192.168.0.162 nimsrv02
192.168.0.161 nimsrv01
127.0.0.1 loopback localhost # loopback (lo0) name/address
192.168.0.194 xxvio006
192.168.0.193 xxvio005
192.168.0.192 xxvio004
192.168.0.191 xxvio003
192.168.0.190 xxvio002
192.168.0.189 xxvio001
192.168.0.162 nimsrv02
192.168.0.161 nimsrv01
127.0.0.1 localhost
192.168.0.53 xxvio007
192.168.0.162 nimsrv02
192.168.0.161 nimsrv01
127.0.0.1 localhost
192.168.0.54 xxvio008
192.168.0.162 nimsrv02
192.168.0.181 nimsrv01
127.0.0.1 loopback localhost # loopback (lo0) name/address
192.168.0.83 xxvio010
192.168.0.82 xxvio009
192.168.0.162 nimsrv02
192.168.0.161 nimsrv01
Agora vamos normalizá-lo trocando diversos brancos por <TAB> e matando
comentários
$ sed -ir 's/ +#.*//; s/ +/\t/' temp
$ cat temp
192.168.0.194 xxvio006
192.168.0.193 xxvio005
192.168.0.192 xxvio004
192.168.0.191 xxvio003
192.168.0.190 xxvio002
192.168.0.189 xxvio001
192.168.0.162 nimsrv02
192.168.0.161 nimsrv01
127.0.0.1 loopback localhost
192.168.0.194 xxvio006
192.168.0.193 xxvio005
192.168.0.192 xxvio004
192.168.0.191 xxvio003
192.168.0.190 xxvio002
192.168.0.189 xxvio001
192.168.0.162 nimsrv02
192.168.0.161 nimsrv01
127.0.0.1 localhost
192.168.0.53 xxvio007
192.168.0.162 nimsrv02
192.168.0.161 nimsrv01
127.0.0.1 localhost
192.168.0.54 xxvio008
192.168.0.162 nimsrv02
192.168.0.181 nimsrv01
127.0.0.1 loopback localhost
192.168.0.83 xxvio010
192.168.0.82 xxvio009
192.168.0.162 nimsrv02
192.168.0.161 nimsrv01
Agora vamos classificá-lo para começar a brincadeira:
$ sort -r temp -o temp
$ uniq -c temp
1 192.168.0.83 xxvio010
1 192.168.0.82 xxvio009
1 192.168.0.54 xxvio008
1 192.168.0.53 xxvio007
2 192.168.0.194 xxvio006
2 192.168.0.193 xxvio005
2 192.168.0.192 xxvio004
2 192.168.0.191 xxvio003
2 192.168.0.190 xxvio002
2 192.168.0.189 xxvio001
1 192.168.0.181 nimsrv01
5 192.168.0.162 nimsrv02
4 192.168.0.161 nimsrv01
2 127.0.0.1 loopback localhost
2 127.0.0.1 localhost
Repare que na esquerda, apareceu a qtd de repetições e eu acho que é isso
que vc queria.
Se for para exibir somente ou duplicados, vc pode aproveitar o que fizemos
e esticar um pouquinho:
$ uniq -c temp | grep -vE '^ +1 '
2 192.168.0.194 xxvio006
2 192.168.0.193 xxvio005
2 192.168.0.192 xxvio004
2 192.168.0.191 xxvio003
2 192.168.0.190 xxvio002
2 192.168.0.189 xxvio001
5 192.168.0.162 nimsrv02
4 192.168.0.161 nimsrv01
2 127.0.0.1 loopback localhost
2 127.0.0.1 localhost
Seria isso?
Para fazer em uma linha:
$ sed -r 's/ +#.*//; s/ +/\t/' host_xxvio* | sort -r | uniq -c # |
grep -vE '^ +1 '
Abcs,
Julio
*âDamos treinamento em sua empresa por *
*um preço, no mÃnimo, 50% mais barato que qualquer curso,*
*com certificado e nota fiscal.*
ââ
Nosso time de instrutores *in company* é formado somente por
â
â
autores
â â
â
de
*Best Sellersâ â*âlaureados âsobre os temas. P. exemplo:
Shell básico e Programação em Shell Julio Neves
Bacula Heitor Medrado
Zabbix Adail Host
Produção Gráfica e Videografismo Cadunico
Post by Michael Costa ***@gmail.com [shell-script]echo "Exibindo conteudo do arquivo: $i"
cat $i
echo ""
done
Exibindo conteudo do arquivo: hosts_xxvio003
opback localhost # loopback (lo0) name/address
192.168.0.194 xxvio006
192.168.0.193 xxvio005
192.168.0.192 xxvio004
192.168.0.191 xxvio003
192.168.0.190 xxvio002
192.168.0.189 xxvio001
192.168.0.162 nimsrv02
192.168.0.161 nimsrv01
Exibindo conteudo do arquivo: hosts_xxvio004
127.0.0.1 loopback localhost # loopback (lo0) name/address
192.168.0.194 xxvio006
192.168.0.193 xxvio005
192.168.0.192 xxvio004
192.168.0.191 xxvio003
192.168.0.190 xxvio002
192.168.0.189 xxvio001
192.168.0.162 nimsrv02
192.168.0.161 nimsrv01
Exibindo conteudo do arquivo: hosts_xxvio007
127.0.0.1 localhost
192.168.0.53 xxvio007
192.168.0.162 nimsrv02
192.168.0.161 nimsrv01
Exibindo conteudo do arquivo: hosts_xxvio008
127.0.0.1 localhost
192.168.0.54 xxvio008
192.168.0.162 nimsrv02
192.168.0.181 nimsrv01
Exibindo conteudo do arquivo: hosts_xxvio009
127.0.0.1 loopback localhost # loopback (lo0) name/address
192.168.0.83 xxvio010
192.168.0.82 xxvio009
192.168.0.162 nimsrv02
192.168.0.161 nimsrv01
A lista não aceita anexos :(
Post by Michael Costa ***@gmail.com [shell-script]Estou anexando os arquivos para ajudar na analise.
Julio, desculpe, mas não entendi como testar a sua resposta.
Post by 'Julio C. Neves' ***@gmail.com [shell-script]- Normalmente, misturar sed com grep não é a melhor programação, use
um ou o outro;
- egrep está deprecated, prefira grep -E;
- O uniq com opção -c te dá a qtd de duplicações, então podemos fazer
$ paste <(sed '/^#/d; /^$/d; s/ */ /; s/ *$//; s/^ *//' | sort -r |
uniq -c | sed -r 's/^ +([0-9]+ ).*/\1/') <(sed '/^#/d; /^$/d; s/ */ /;
s/ *$//; s/^ *//' | sort -r | uniq)
Como não tenho o arquivo, não testei, então pode ser que esteja errado.
Abcs,
Julio
*âDamos treinamento em sua empresa por *
*um preço, no mÃnimo, 50% mais barato que qualquer curso,*
*com certificado e nota fiscal.*
ââ
Nosso time de instrutores *in company* é formado somente por
â
â
autores
â â
â
de
Shell básico e Programação em Shell Julio Neves
Bacula Heitor Medrado
Zabbix Adail Host
Produção Gráfica e Videografismo Cadunico
Post by Michael Costa ***@gmail.com [shell-script]Obrigado por alertar sobre o problema de espaço!
egrep -h -v "^$" hosts_mmvio* | egrep -v '^[a-z]|[A-Z]' | sed -e
"s/[[:blank:]]\{1,\}/ /g" | sort -u > hosts_unificado
Agora ficou o lance dos duplicados para resolver
[shell-script] <
Post by 'Julio C. Neves' ***@gmail.com [shell-script]Post by Michael Costa ***@gmail.com [shell-script]Post by ***@yahoo.com.br [shell-script]Caro Michael
127.0.0.1 localhost
é diferente de
127.0.0.1 localhost
pois este último tem 3 espaços a mais.
sed '/^#/d; /^$/d'
sed '/^#/d; /^$/d; s/ */ /; s/ *$//; s/^ *//'
Nesse caso eu apenas peguei uma ou mais sequência de espaços e fixei
em
final e
e
[As partes desta mensagem que não continham texto foram removidas]