Ajuda com SED [RESOLVIDO]

1. Ajuda com SED [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 08/07/2009 - 16:53h

Tenho um arquivo com milhoes de funcoes, como segue abaixo.

VEL 136943648 0.0
7632 8119 7688 8914 7768 10058 7872 11558
**location 23664 13692
VEL 136943664 0.0
7680 8369 7688 8500 7768 9598 7920 11802
**location 23680 13692
VEL 136943680 0.0
7736 8112 7768 8722 7848 9689 8000 11841
**location 23696 13692
VEL 136943696 0.0
8080 11829 8240 8427 8320 9520 8400 10547
8480 11597 8488 11717


Quero fazer um script para copiar as colunas numericas das linhas que contem a palavra "location" e coloca-las nas linhas que contem a palavra VEL, resultando:

**location 23696 13692
VEL 136943696 0.0 23696 13692
8080 11829 8240 8427 8320 9520 8400 10547
8480 11597 8488 11717

Caso alguem saiba como, favor ajudar.

Att,


  


2. MELHOR RESPOSTA

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 23/07/2009 - 17:50h

O script funciona em algumas distribuições mas em outras não, tinha testado no Open Solaris, tenta o abaixo que fiz para o Debian. E se não der certo ... avisa denovo.


while read line
do
controle=`echo $line | cut -c 3-10`
case "$controle" in
"location" )
location=`echo $line |sed -e "s/\*\*location//g"`
;;
* )
controle=`echo $line | cut -c 1-3`
if [ "$controle" == "VEL" ]; then
line="$line $location"
fi
;;
esac
echo $line >> arquivo_saida
done < arquivo_entrada

3. Re: Ajuda com SED [RESOLVIDO]

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 19/07/2009 - 02:39h

Se eu entendi bem o location deve ser colocado no VEL imediatamente após, certo? se for isso ... tenta o script abaixo:




while read line
do
controle=`echo $line | cut -c 3-10`
case "$controle" in
"location" )
location=`echo $line | sed 's/.**location//g'`
;;
* )
controle=`echo $line | cut -c 1-3`
if [ "$controle" -eq "VEL" ]; then
line="$line $location"
fi
;;
esac
echo $line >> arquivo_saida
done < arquivo_entrada


4. Re: Ajuda com SED [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 20/07/2009 - 10:04h

Testei o script e nao funcionou.
Apareceu esse erro.

sed: -e expression #1, char 16: Invalid preceding regular expression
teste.sh: line 12: [: VEL: integer expression expected

Essa e a linha 12
if [ "$controle" -eq "VEL" ]; then


5. Funcionou

Perfil removido
removido

(usa Nenhuma)

Enviado em 30/07/2009 - 10:54h

Cara, funcionou!

Vlw msm!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts