Quero imprimir todo o endereço IP e nome do host de / etc / hosts usando o script Shell

0

Eu quero imprimir o endereço IP e o nome do host de /etc/hosts usando um script de shell

/etc/hosts file:

## #For example:
## #102.54.94.97     rhino.acme.com          # source server
## #38.25.63.10      x.acme.com              # x client host
## #localhost name resolution is handled within DNS itself.
##  #127.0.0.1       localhost
##  #::1             localhost
111.11.1.1  aaaa.aa.aa
111.11.1.1  aaaa.aa.aa
111.11.1.1  aaaa.aa.aa
111.11.1.1  aaaa.aa.aa

# #122.55.80.97     bbb.bb.bb
# #122.55.80.98     ccc.cc.cc

Eu preciso de um endereço IP válido de saída e nome de host nem todas as linhas

111.11.1.1  aaaa.aa.aa
111.11.1.1  aaaa.aa.aa
111.11.1.1  aaaa.aa.aa
111.11.1.1  aaaa.aa.aa

não todas as linhas

    
por Kannan M 04.05.2018 / 07:38

2 respostas

0

Tente isso

sed -e '/^#/d' -e '/^\s*$/d' /etc/hosts

excluirá todas as linhas iniciadas com # e linhas em branco.

    
por 04.05.2018 / 10:47
2

Removendo as linhas comentadas e vazias de /etc/hosts :

sed -e 's/#.*//' -e 's/[[:blank:]]*$//' -e '/^$/d' /etc/hosts

Isso usa três expressões sed na seguinte ordem:

  1. Remover tudo depois de um # (incluindo o # ).
  2. Remove espaços em branco (espaços ou tabulações) no final das linhas.
  3. Excluir linhas vazias.

Dado o seu arquivo de exemplo, isso produz

111.11.1.1  aaaa.aa.aa
111.11.1.1  aaaa.aa.aa
111.11.1.1  aaaa.aa.aa
111.11.1.1  aaaa.aa.aa

Isso obviamente não tenta validar os endereços e nomes restantes.

    
por 04.05.2018 / 08:56