[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Tratar texto.
From: |
jimmy |
Subject: |
Re: [shell-script] Tratar texto. |
Date: |
Wed, 5 Nov 2008 11:11:31 -0200 |
User-agent: |
Mutt/1.4.2.3i |
On Wed, Nov 05, 2008 at 04:16:26AM -0800, Edmilson Menezes wrote:
> Bom dia pessoal, tenho o seguinte texto:
>
> mestre01 SERVIDOR #5508308AAAAAAABH CAMPO1 CAMPO2 CAMPO3
> mestre01 NOME01 ERRO CAMPO1 CAMPO2 CAMPO3
> mestre01 NOME02 ERRO 00 CAMPO1 CAMPO2 CAMPO3
> mestre01 SERVIDOR01 #QUALQUER CAMPO1 CAMPO2 CAMPO3
> mestre01 >>ESTADO run NOME1 ERRO 00 CAMPO1 CAMPO2 CAMPO3
> mestre02 SERVIDOR13 #COISA CAMPO1 CAMPO2 CAMPO3
> mestre02 >>ESTADO run NOME1 ERRO 00 CAMPO1 CAMPO2 CAMPO3
> mestre02 SERVIDOR37 #QUALQUER CAMPO1 CAMPO2 CAMPO3
> mestre02 >>ESTADO run NOME9 ERRO CAMPO1 CAMPO2 CAMPO3
> mestre02 SERVIDOR41 #5508308AAAAAAABF CAMPO1 CAMPO2 CAMPO3
> mestre02 NOME7 ERRO CAMPO1 CAMPO2 CAMPO3
>
>
> Creio que o texto esta desconfigurado, por favor verifiquem aqui:
>
> http://pastebin.com/m6dc8f790 , acho que postei corretamente.
>
> Então, eu gostaria que o segundo campo do texto que contem o nome de um
> servidor ficasse junto com o processo que o mesmo executa que é a linha que
> esta abaixo, e assim por diante com os outros servidores, eu até consegui
> colocar o nome do mesmo servidor para todas as linhas, mais preciso colocar o
> servidor e seu processo os demais campos são diferentes e variam por linha,
> algumas linhas estão com 9 campos e podem ir até 15 campos. Pessoal não
> coloquei o que fiz porque não sei por onde começar sei até como ler campo a
> campo mais fazer com que fique o servidor com o processo não. Obrigado.
>
>
>
> ------------------------------------
se entendi o que você quer algum dos três scripts abaixo resolve o seu
problema:
$ awk '{server=($0 ~ /SERVIDOR/)?$2:server;$1=($1" "server); print}' texto
$ sed '/SERVIDOR/{p;s/^[^ ]\+ \([^ ]\+\) .*$/\1/;h;d};G;s/^\([^ ]\+\)
\([^\n]\+\)\n\(.*\)/\1 \3 \2/' texto
$ while :; do read c1 c2 last || break; [[ $c2 =~ SERVIDOR ]] && server=" $c2";
echo -e "$c1$server $c2$last"; done < texto
mas fica o problema de determinar qual a expressão que ocorre na linha
que contém o nome do servidor que não ocorre nas demais, estou assumindo
a palavra "SERVIDOR" mas deveria ser a expressão.
- Tratar texto., Edmilson Menezes, 2008/11/05
- Re: [shell-script] Tratar texto.,
jimmy <=