Discussion:
[shell-script] Unir centenas de arquivos hosts em um unico arquivo
Michael Costa linuxajuda@gmail.com [shell-script]
2017-02-25 18:16:00 UTC
Permalink
Pessoal!

Tenho 289 servidores, cada um deles tem um /etc/hosts diferente.
Preciso criar um /etc/hosts unico para ser replicado em todos eles.

Alguns arquivos de hosts tem nome duplicado e isto tem dificultado a
criação do script.

Fiz um "limpa_hosts.sh" para retirar qualquer comentario, linha em branco e
organiza em ordem.

$ cat limpa_hosts.sh
#!/bin/bash

for i in hosts_*; do
echo -n "Processando arquivo $i..."
grep -v '^#' $i > a
grep -v '^$' a > b
cat b | sort -r -k 1 | tr A-Z a-z> $i
rm a b
echo "OK"
done

Conseguem me ajudar a montar o script que vai unir todos os /etc/hosts ?

A logica seria:

Arquivos:
hosts_serverA
hosts_serverB
hosts_serverC
hosts_serverD
...
hosts_serverZ

comparar o A com o B e gerar um TEMP, depois compara o TEMP com C e gera o
TEMP1, depois comparar o TEMP1 com o D e gera outro TEMP e por ai vai
Até finalizar e ter um único /etc/hosts confiável com o conteúdo de todos
os outros servidores.

OBS.: Sei que o correto é usar o DNS, mas é solução do cliente e ele não
deseja alterar.

Obrigado qualquer tipo de ajuda!

Abraços!

Michael
Tiago Peczenyj tiago.peczenyj@gmail.com [shell-script]
2017-02-25 18:51:19 UTC
Permalink
Junta tudo

Depois faz sort / uniq :)
Post by Michael Costa ***@gmail.com [shell-script]
Pessoal!
Tenho 289 servidores, cada um deles tem um /etc/hosts diferente.
Preciso criar um /etc/hosts unico para ser replicado em todos eles.
Alguns arquivos de hosts tem nome duplicado e isto tem dificultado a
criação do script.
Fiz um "limpa_hosts.sh" para retirar qualquer comentario, linha em branco
e organiza em ordem.
$ cat limpa_hosts.sh
#!/bin/bash
for i in hosts_*; do
echo -n "Processando arquivo $i..."
grep -v '^#' $i > a
grep -v '^$' a > b
cat b | sort -r -k 1 | tr A-Z a-z> $i
rm a b
echo "OK"
done
Conseguem me ajudar a montar o script que vai unir todos os /etc/hosts ?
hosts_serverA
hosts_serverB
hosts_serverC
hosts_serverD
...
hosts_serverZ
comparar o A com o B e gerar um TEMP, depois compara o TEMP com C e gera
o TEMP1, depois comparar o TEMP1 com o D e gera outro TEMP e por ai vai
Até finalizar e ter um único /etc/hosts confiável com o conteúdo de todos
os outros servidores.
OBS.: Sei que o correto é usar o DNS, mas é solução do cliente e ele não
deseja alterar.
Obrigado qualquer tipo de ajuda!
Abraços!
Michael
--
Tiago B. Peczenyj

http://about.me/peczenyj
itamarnet@yahoo.com.br [shell-script]
2017-02-26 00:18:10 UTC
Permalink
Michael

Vou me intrometer até no assunto do limpa_hosts.sh junto com a junção dos hosts.

$ cat hosts_* | sed '/^#/d; /^$/d' | tr A-Z a-z | sort -r | uniq > hosts_unificados


Isso serve?

[]'s
Itamar
'Julio C. Neves' julio.neves@gmail.com [shell-script]
2017-02-26 10:56:00 UTC
Permalink
Ou, para diminuir mais um pouco:
sed '/^#/d; /^$/d' hosts_* | tr A-Z a-z | sort -r | uniq > hosts_unificados

Em 25 de fev de 2017 21:18, "***@yahoo.com.br [shell-script]" <
shell-***@yahoogrupos.com.br> escreveu:



Michael

Vou me intrometer até no assunto do limpa_hosts.sh junto com a junção dos
hosts.

$ cat hosts_* | sed '/^#/d; /^$/d' | tr A-Z a-z | sort -r | uniq >
hosts_unificados


Isso serve?

[]'s
Itamar
Michael Costa linuxajuda@gmail.com [shell-script]
2017-02-26 23:44:46 UTC
Permalink
Pessoal!

Executei o script e por algum motivo muitos aparecem duplicados. Segue
output:

[***@oc1707181415 hosts]$ cat hosts_unificados
opback localhost # loopback (lo0) name/address
127.0.0.1 loopback localhost # loopback (lo0) name/address
127.0.0.1 localhost
127.0.0.1 localhost
10.2.11.18 mmvio018
10.2.11.17 mmvio017
10.1.11.8 mmvio014
10.1.11.89 mmvio016
10.1.11.83 mmvio010
10.1.11.83 mmvio010
10.1.11.82 mmvio009
10.1.11.82 mmvio009
10.1.11.62 mmvio015
10.1.11.54 mmvio008
10.1.11.53 mmvio007
10.1.11.31 brhohmct8.dominio.com
10.1.11.30 brhohmct0.dominio.com
10.1.11.30 brhohmct0.dominio.com
10.1.11.26 mmvio018
10.1.11.243 mmvio014
10.1.11.242 mmvio013
10.1.11.23 mmvio018
10.1.11.195 brhohmct9.dominio.com
10.1.11.194 mmvio006
10.1.11.193 mmvio005
10.1.11.192 mmvio004
10.1.11.191 mmvio003
10.1.11.190 mmvio002
10.1.11.189 mmvio001
10.1.11.162 himsrv02
10.1.11.162 himsrv02
10.1.11.161 himsrv01
10.1.11.161 himsrv01
10.1.11.124 mmvio018
10.1.11.124 mmvio017
10.1.11.111 mmvio012
10.1.11.111 mmvio012
10.1.11.110 mmvio011
10.1.11.110 mmvio011
10.103.11.8 mmvio014
[***@oc1707181415 hosts]$ cat une_hosts.sh
#!/bin/bash
sed '/^#/d; /^$/d' hosts_mmvio* | tr A-Z a-z | sort -r | uniq >
hosts_unificados
[***@oc1707181415 hosts]$


Como podem ver, o mmvio10, localhost ficou duplicado (mesmo o codigo
obrigando o uso do UNIQ).
Um outro problema que percebi, seria o caso do mmvio18 onde eu tenho 2
entradas com IPs diferentes. Neste caso, acho que ele poderia me gerar um
output falando que esta com 2 IPs diferentes (poderia ate fazer eu escolher
eu escolher o correto!)

Agradeço a ajuda!

Michael
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
sed '/^#/d; /^$/d' hosts_* | tr A-Z a-z | sort -r | uniq > hosts_unificados
Michael
Vou me intrometer até no assunto do limpa_hosts.sh junto com a junção dos hosts.
$ cat hosts_* | sed '/^#/d; /^$/d' | tr A-Z a-z | sort -r | uniq > hosts_unificados
Isso serve?
[]'s
Itamar
itamarnet@yahoo.com.br [shell-script]
2017-02-27 00:56:52 UTC
Permalink
Caro Michael

Não é duplicado pois os espaços são significativos, então:
127.0.0.1 localhost
é diferente de
127.0.0.1 localhost
pois este último tem 3 espaços a mais.

O que poderia fazer é uniformizar os espaços com o sed mesmo:
No lugar de:
sed '/^#/d; /^$/d'

Use algo como:
sed '/^#/d; /^$/d; s/ */ /; s/ *$//; s/^ *//'

Nesse caso eu apenas peguei uma ou mais sequência de espaços e fixei em 4 espaços e eliminei a possibilidade de haver espaços adicionais no final e no começo.

Acho que isso elimina o problema, exceto pela ocorrência da primeira e segunda linha.

[]'s
Itamar
Michael Costa linuxajuda@gmail.com [shell-script]
2017-02-27 12:03:04 UTC
Permalink
Obrigado por alertar sobre o problema de espaço!
Consegui resolver assim:

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
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 4
espaços e eliminei a possibilidade de haver espaços adicionais no final e
no começo.
Acho que isso elimina o problema, exceto pela ocorrência da primeira e segunda linha.
[]'s
Itamar
'Julio C. Neves' julio.neves@gmail.com [shell-script]
2017-02-28 19:01:41 UTC
Permalink
Algumas observações [in]úteis:

- 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
algo com:

$ 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
*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]
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
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 4
espaços e eliminei a possibilidade de haver espaços adicionais no final e
no começo.
Acho que isso elimina o problema, exceto pela ocorrência da primeira e segunda linha.
[]'s
Itamar
Michael Costa linuxajuda@gmail.com [shell-script]
2017-02-28 20:54:27 UTC
Permalink
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
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
4 espaços e eliminei a possibilidade de haver espaços adicionais no final e
no começo.
Acho que isso elimina o problema, exceto pela ocorrência da primeira e
segunda linha.
[]'s
Itamar
[As partes desta mensagem que não continham texto foram removidas]
'Julio C. Neves' julio.neves@gmail.com [shell-script]
2017-03-01 00:49:11 UTC
Permalink
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
4 espaços e eliminei a possibilidade de haver espaços adicionais no
final e
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
Post by Michael Costa ***@gmail.com [shell-script]
Post by ***@yahoo.com.br [shell-script]
no começo.
Acho que isso elimina o problema, exceto pela ocorrência da primeira e
segunda linha.
[]'s
Itamar
[As partes desta mensagem que não continham texto foram removidas]
Michael Costa linuxajuda@gmail.com [shell-script]
2017-03-01 12:28:46 UTC
Permalink
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
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
Post by Michael Costa ***@gmail.com [shell-script]
Post by ***@yahoo.com.br [shell-script]
4 espaços e eliminei a possibilidade de haver espaços adicionais no
final e
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
Post by Michael Costa ***@gmail.com [shell-script]
Post by ***@yahoo.com.br [shell-script]
no começo.
Acho que isso elimina o problema, exceto pela ocorrência da primeira e
segunda linha.
[]'s
Itamar
[As partes desta mensagem que não continham texto foram removidas]
'Julio C. Neves' julio.neves@gmail.com [shell-script]
2017-03-01 13:21:08 UTC
Permalink
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
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
Post by Michael Costa ***@gmail.com [shell-script]
Post by ***@yahoo.com.br [shell-script]
4 espaços e eliminei a possibilidade de haver espaços adicionais no
final e
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
Post by Michael Costa ***@gmail.com [shell-script]
Post by ***@yahoo.com.br [shell-script]
no começo.
Acho que isso elimina o problema, exceto pela ocorrência da primeira
e
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
Post by Michael Costa ***@gmail.com [shell-script]
Post by ***@yahoo.com.br [shell-script]
segunda linha.
[]'s
Itamar
[As partes desta mensagem que não continham texto foram removidas]
Michael Costa linuxajuda@gmail.com [shell-script]
2017-03-01 21:09:31 UTC
Permalink
Acho que anos de treino não chegaria neste nivel!
Muito obrigado Julio... vc foi brilhante!
Compro todas as edições dos seus livros, é um modo de incentivar e
agradecer seu trabalho e a atenção que nos dá.

Muito obrigado!
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
Vou fazer passo a passo (poderia ficar menor) para facilitar o
$ 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
$ 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
$ 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?
$ 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
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.
Em 28 de fevereiro de 2017 16:01, 'Julio C. Neves'
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.
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
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
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
Post by Michael Costa ***@gmail.com [shell-script]
Post by ***@yahoo.com.br [shell-script]
4 espaços e eliminei a possibilidade de haver espaços adicionais no
final e
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
Post by Michael Costa ***@gmail.com [shell-script]
Post by ***@yahoo.com.br [shell-script]
no começo.
Acho que isso elimina o problema, exceto pela ocorrência da
primeira e
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
Post by Michael Costa ***@gmail.com [shell-script]
Post by ***@yahoo.com.br [shell-script]
segunda linha.
[]'s
Itamar
[As partes desta mensagem que não continham texto foram removidas]
'Julio C. Neves' julio.neves@gmail.com [shell-script]
2017-03-01 22:07:47 UTC
Permalink
Não precisa comprar todas, basta ter uma após a 5a. edição, que sempre que
sai uma nova, público o changelog na minha página
Post by Michael Costa ***@gmail.com [shell-script]
Acho que anos de treino não chegaria neste nivel!
Muito obrigado Julio... vc foi brilhante!
Compro todas as edições dos seus livros, é um modo de incentivar e
agradecer seu trabalho e a atenção que nos dá.
Muito obrigado!
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
$ 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
$ 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
$ 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?
$ 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
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.
Em 28 de fevereiro de 2017 16:01, 'Julio C. Neves'
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/ */
/;
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
s/ *$//; s/^ *//' | sort -r | uniq)
Como não tenho o arquivo, não testei, então pode ser que esteja
errado.
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
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
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
Post by Michael Costa ***@gmail.com [shell-script]
Post by ***@yahoo.com.br [shell-script]
4 espaços e eliminei a possibilidade de haver espaços adicionais
no final e
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
Post by Michael Costa ***@gmail.com [shell-script]
Post by ***@yahoo.com.br [shell-script]
no começo.
Acho que isso elimina o problema, exceto pela ocorrência da
primeira e
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
Post by Michael Costa ***@gmail.com [shell-script]
Post by ***@yahoo.com.br [shell-script]
segunda linha.
[]'s
Itamar
[As partes desta mensagem que não continham texto foram removidas]
Fernando Mercês nandu88@gmail.com [shell-script]
2017-03-03 16:38:50 UTC
Permalink
Acho que ele quis dizer que compra *também* para apoiar o trabalho, Julio.
Eu também faço isso. Compro a edição seguinte e dÎo a que tenho para alguma
biblioteca ou estudante. ;-)

Abraço!


Att,

@MercesFernando
mentebinaria.com.br <http://www.mentebinaria.com.br>
---------------------------
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
Não precisa comprar todas, basta ter uma após a 5a. edição, que sempre que
sai uma nova, público o changelog na minha página
Post by Michael Costa ***@gmail.com [shell-script]
Acho que anos de treino não chegaria neste nivel!
Muito obrigado Julio... vc foi brilhante!
Compro todas as edições dos seus livros, é um modo de incentivar e
agradecer seu trabalho e a atenção que nos dá.
Muito obrigado!
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
$ 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
$ 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
$ 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?
$ 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
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
Em 28 de fevereiro de 2017 21:49, 'Julio C. Neves'
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.
Em 28 de fevereiro de 2017 16:01, 'Julio C. Neves'
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
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
$ paste <(sed '/^#/d; /^$/d; s/ */ /; s/ *$//; s/^ *//' | sort -r |
uniq -c | sed -r 's/^ +([0-9]+ ).*/\1/') <(sed '/^#/d; /^$/d; s/ */
/;
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
s/ *$//; s/^ *//' | sort -r | uniq)
Como não tenho o arquivo, não testei, então pode ser que esteja
errado.
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
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
Em 27 de fevereiro de 2017 09:03, Michael Costa
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
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
Post by Michael Costa ***@gmail.com [shell-script]
Post by ***@yahoo.com.br [shell-script]
4 espaços e eliminei a possibilidade de haver espaços adicionais
no final e
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
Post by Michael Costa ***@gmail.com [shell-script]
Post by ***@yahoo.com.br [shell-script]
no começo.
Acho que isso elimina o problema, exceto pela ocorrência da
primeira e
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
Post by Michael Costa ***@gmail.com [shell-script]
Post by ***@yahoo.com.br [shell-script]
segunda linha.
[]'s
Itamar
[As partes desta mensagem que não continham texto foram removidas]
'Julio C. Neves' julio.neves@gmail.com [shell-script]
2017-03-03 17:21:35 UTC
Permalink
Fala Grande Amigo Mercês,
eu havia entendido a colocação do Michael, mas como a lista está com mais
de 4.000 inscritos e dentre eles muita gente que tem o meu livro, quis dar
o recado para todos. Na semana passada, alguém perguntou pelos melhores
livros de shell, sequer mencionei o meu, só falei do Papo de Botequim, que
é bem completo e grátis na internet.

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 Fernando Mercês ***@gmail.com [shell-script]
Acho que ele quis dizer que compra *também* para apoiar o trabalho, Julio.
Eu também faço isso. Compro a edição seguinte e dÎo a que tenho para alguma
biblioteca ou estudante. ;-)
Abraço!
Att,
@MercesFernando
mentebinaria.com.br <http://www.mentebinaria.com.br>
---------------------------
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
Não precisa comprar todas, basta ter uma após a 5a. edição, que sempre
que sai uma nova, público o changelog na minha página
Post by Michael Costa ***@gmail.com [shell-script]
Acho que anos de treino não chegaria neste nivel!
Muito obrigado Julio... vc foi brilhante!
Compro todas as edições dos seus livros, é um modo de incentivar e
agradecer seu trabalho e a atenção que nos dá.
Muito obrigado!
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
$ 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
$ 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
$ 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?
$ 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
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
Em 28 de fevereiro de 2017 21:49, 'Julio C. Neves'
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.
Em 28 de fevereiro de 2017 16:01, 'Julio C. Neves'
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
- Normalmente, misturar sed com grep não é a melhor programação,
use
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
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
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
$ paste <(sed '/^#/d; /^$/d; s/ */ /; s/ *$//; s/^ *//' | sort -r |
uniq -c | sed -r 's/^ +([0-9]+ ).*/\1/') <(sed '/^#/d; /^$/d; s/
*/ /;
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
s/ *$//; s/^ *//' | sort -r | uniq)
Como não tenho o arquivo, não testei, então pode ser que esteja
errado.
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
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
Em 27 de fevereiro de 2017 09:03, Michael Costa
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
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
Post by Michael Costa ***@gmail.com [shell-script]
Post by ***@yahoo.com.br [shell-script]
4 espaços e eliminei a possibilidade de haver espaços adicionais
no final e
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
Post by Michael Costa ***@gmail.com [shell-script]
Post by ***@yahoo.com.br [shell-script]
no começo.
Acho que isso elimina o problema, exceto pela ocorrência da
primeira e
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
Post by Michael Costa ***@gmail.com [shell-script]
Post by ***@yahoo.com.br [shell-script]
segunda linha.
[]'s
Itamar
[As partes desta mensagem que não continham texto foram removidas]
Michael Costa linuxajuda@gmail.com [shell-script]
2017-03-17 12:56:30 UTC
Permalink
Você além de um excelente escritor é humilde e tem como objetivo ajudar a
comunidade!
Parabéns pela excelente pessoa que demonstra ser.
E realmente faço o que o Fernando comentou, compro a nova edição e faço
doação para uma biblioteca a versão antiga.
Muito obrigado!
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
Fala Grande Amigo Mercês,
eu havia entendido a colocação do Michael, mas como a lista está com mais
de 4.000 inscritos e dentre eles muita gente que tem o meu livro, quis dar
o recado para todos. Na semana passada, alguém perguntou pelos melhores
livros de shell, sequer mencionei o meu, só falei do Papo de Botequim, que
é bem completo e grátis na internet.
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 Fernando Mercês ***@gmail.com [shell-script]
Acho que ele quis dizer que compra *também* para apoiar o trabalho,
Julio. Eu também faço isso. Compro a edição seguinte e dÎo a que tenho para
alguma biblioteca ou estudante. ;-)
Abraço!
Att,
@MercesFernando
mentebinaria.com.br <http://www.mentebinaria.com.br>
---------------------------
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
Não precisa comprar todas, basta ter uma após a 5a. edição, que sempre
que sai uma nova, público o changelog na minha página
Post by Michael Costa ***@gmail.com [shell-script]
Acho que anos de treino não chegaria neste nivel!
Muito obrigado Julio... vc foi brilhante!
Compro todas as edições dos seus livros, é um modo de incentivar e
agradecer seu trabalho e a atenção que nos dá.
Muito obrigado!
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
$ 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
$ 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
$ 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?
$ 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
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
Em 28 de fevereiro de 2017 21:49, 'Julio C. Neves'
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.
Em 28 de fevereiro de 2017 16:01, 'Julio C. Neves'
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
- Normalmente, misturar sed com grep não é a melhor programação,
use
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
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
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
$ paste <(sed '/^#/d; /^$/d; s/ */ /; s/ *$//; s/^ *//' | sort -r
|
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
uniq -c | sed -r 's/^ +([0-9]+ ).*/\1/') <(sed '/^#/d; /^$/d; s/
*/ /;
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
s/ *$//; s/^ *//' | sort -r | uniq)
Como não tenho o arquivo, não testei, então pode ser que esteja
errado.
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
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
Em 27 de fevereiro de 2017 09:03, Michael Costa
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
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
Post by Michael Costa ***@gmail.com [shell-script]
Post by ***@yahoo.com.br [shell-script]
4 espaços e eliminei a possibilidade de haver espaços
adicionais no final e
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
Post by Michael Costa ***@gmail.com [shell-script]
Post by ***@yahoo.com.br [shell-script]
no começo.
Acho que isso elimina o problema, exceto pela ocorrência da
primeira e
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
Post by Michael Costa ***@gmail.com [shell-script]
Post by ***@yahoo.com.br [shell-script]
segunda linha.
[]'s
Itamar
[As partes desta mensagem que não continham texto foram removidas]
'Julio C. Neves' julio.neves@gmail.com [shell-script]
2017-03-17 20:38:50 UTC
Permalink
Michael, sendo curto e grosso: nenhum direito autoral no Brasil é melhor
que um elogio como esses que vc e o Mercês me fizeram. Honestamente, fiquei
sensibilizado.

Muito obrigado e sempre às ordens.

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]
Você além de um excelente escritor é humilde e tem como objetivo ajudar a
comunidade!
Parabéns pela excelente pessoa que demonstra ser.
E realmente faço o que o Fernando comentou, compro a nova edição e faço
doação para uma biblioteca a versão antiga.
Muito obrigado!
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
Fala Grande Amigo Mercês,
eu havia entendido a colocação do Michael, mas como a lista está com mais
de 4.000 inscritos e dentre eles muita gente que tem o meu livro, quis dar
o recado para todos. Na semana passada, alguém perguntou pelos melhores
livros de shell, sequer mencionei o meu, só falei do Papo de Botequim, que
é bem completo e grátis na internet.
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 Fernando Mercês ***@gmail.com [shell-script]
Acho que ele quis dizer que compra *também* para apoiar o trabalho,
Julio. Eu também faço isso. Compro a edição seguinte e dÎo a que tenho para
alguma biblioteca ou estudante. ;-)
Abraço!
Att,
@MercesFernando
mentebinaria.com.br <http://www.mentebinaria.com.br>
---------------------------
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
Não precisa comprar todas, basta ter uma após a 5a. edição, que sempre
que sai uma nova, público o changelog na minha página
Post by Michael Costa ***@gmail.com [shell-script]
Acho que anos de treino não chegaria neste nivel!
Muito obrigado Julio... vc foi brilhante!
Compro todas as edições dos seus livros, é um modo de incentivar e
agradecer seu trabalho e a atenção que nos dá.
Muito obrigado!
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
$ 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
$ 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
$ 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?
$ 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
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
Em 28 de fevereiro de 2017 21:49, 'Julio C. Neves'
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.
Em 28 de fevereiro de 2017 16:01, 'Julio C. Neves'
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
- Normalmente, misturar sed com grep não é a melhor programação,
use
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
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
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
$ paste <(sed '/^#/d; /^$/d; s/ */ /; s/ *$//; s/^ *//' | sort
-r |
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
uniq -c | sed -r 's/^ +([0-9]+ ).*/\1/') <(sed '/^#/d; /^$/d; s/
*/ /;
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
s/ *$//; s/^ *//' | sort -r | uniq)
Como não tenho o arquivo, não testei, então pode ser que esteja
errado.
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
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
Em 27 de fevereiro de 2017 09:03, Michael Costa
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
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
Post by Michael Costa ***@gmail.com [shell-script]
Post by ***@yahoo.com.br [shell-script]
4 espaços e eliminei a possibilidade de haver espaços
adicionais no final e
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
Post by Michael Costa ***@gmail.com [shell-script]
Post by ***@yahoo.com.br [shell-script]
no começo.
Acho que isso elimina o problema, exceto pela ocorrência da
primeira e
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
Post by Michael Costa ***@gmail.com [shell-script]
Post by ***@yahoo.com.br [shell-script]
segunda linha.
[]'s
Itamar
[As partes desta mensagem que não continham texto foram removidas]
Continue reading on narkive:
Search results for '[shell-script] Unir centenas de arquivos hosts em um unico arquivo' (Questions and Answers)
7
replies
Como que a internet foi descoberta ? Quem descobriu ? Quem inventou?
started 2012-01-20 12:13:44 UTC
conhecimentos gerais
Loading...