Dar uma chance awk '{gsub("host","");gsub("=","");print;}' filename
awk
remove os host
e =
e depois imprime cada linha.
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.
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
}'
Tags text-processing shell