Tentando imprimir a linha completa de um arquivo enorme que possui \ (conector para linhas)

2

Estou tentando coletar linhas de um arquivo com o host de palavra específico: por exemplo, o host de palavra, eu preciso obter a saída de todos os nomes de hosts. Este é o meu arquivo:

host= mx,rt,fd,rt,wed,asd, \
      fm, jklf,dfd,dfd
host = jd,er,ew,yu,tg,ed,ik,cs,\
       fd, gr, jy
host = mz,fg,jh

Estou usando:

$ grep -i host nome do arquivo | awk '{print $ 2}'

funciona apenas para a primeira linha, não produz nenhum nome após \

, então a saída é:

   mx,rt,fd,rt,wed,asd, \

   jd,er,ew,yu,tg,ed,ik,cs,\

    mz,fg,jh

como você vê, não estou recebendo o restante da linha depois de \

Eu não quero me livrar de \ Eu gostaria de mantê-lo, eu posso movê-lo e conectar todos os nomes, então ele será visto como one_line, mas eu não quero fazer isso.

Qualquer ideia, é apreciada, pode ser fácil, mas posso fazê-la funcionar, mesmo quando uso tr.

    
por Moez 27.02.2017 / 20:50

2 respostas

-1

Dar uma chance awk '{gsub("host","");gsub("=","");print;}' filename

awk remove os host e = e depois imprime cada linha.

    
por 27.02.2017 / 22:35
4

Você poderia fazer:

 sed '
   # delete all but lines starting with host= (allowing blanks)
   /^[[:blank:]]*host[[:blank:]]*=[[:blank:]]*/!d

   # remove that host= part
   s///
   :1
   /\$/{
     # if the line ends in \, append the next line and loop 
     N;b1
   }'
    
por 27.02.2017 / 23:17