Tratamento de texto [RESOLVIDO]

1. Tratamento de texto [RESOLVIDO]

Murillo Maciel de Arruda
murillo.arruda

(usa Debian)

Enviado em 15/01/2011 - 13:44h

Pessoal, boa tarde.

Eu preciso de uma ajuda com o SED. Eu conheço muito este comando, seu o básico.

Eu tenho um arquivo com o seguinte conteúdo:

NAME[1212]="Fulano de Tal"
NAME[1010]="Ciclano de Souza"
NAME[1515]="Beltrano Filho"

Eu preciso de um sed, ou comando que transforme o arquivo em:

NAME[1212]="Fulano de Tal-1212"
NAME[1010]="Ciclano de Souza-1010"
NAME[1515]="Beltrano Filho-1515"

Como que eu posso fazer isso?

Agradeço desde já qualquer ajuda.

Muito Obrigado


  


2. Re: Tratamento de texto [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 16/01/2011 - 13:32h

#!/bin/bash
# name tratamento_de_texto.sh
# since 2011.01.16 23:58:00 (GMT -03:00)
# author Paulo Riceli Dias Lelis (./.ronin)
# more http://sekysu.blogspot.com

FILE='script.txt'
IFS_OLD=$IFS
IFS=$(echo -e "\n\t")

for i in $( grep '^NAME\[' $FILE | grep -v '#' )
do
NUMBER=$( echo $i | cut -d '[' -f 2 | cut -d ']' -f1 )
REGEX=$( echo -n 's/\"$/-'; echo -n ${NUMBER}; echo -n '\"/' )
echo $i | sed $REGEX
done

IFS=$IFS_OLD


3. Re: Tratamento de texto [RESOLVIDO]

Murillo Maciel de Arruda
murillo.arruda

(usa Debian)

Enviado em 16/01/2011 - 16:34h

Já está dando quase certo!!! Mais da o erro:


sed: -e expression #1, char 6: unterminated `s' command
sed: -e expression #1, char 6: unterminated `s' command
sed: -e expression #1, char 6: unterminated `s' command



4. Re: Tratamento de texto [RESOLVIDO]

Murillo Maciel de Arruda
murillo.arruda

(usa Debian)

Enviado em 16/01/2011 - 20:51h

Resolução:

sed 's/NAME\[\([^]]*\)\].*/&-\1"/' arqv_original > arqv_tratado


5. Re: Tratamento de texto [RESOLVIDO]

Marcos Paulo Ferreira
Daemonio

(usa Slackware)

Enviado em 18/01/2011 - 13:06h

Sei que já foi resolvido mas na sua solução, o & incorpora a última aspas também.
Então algo assim NAME[11]="eu" viraria NAME[11]="eu"-11".

Modifiquei seu sed para:

$ sed 's/\(NAME\[\([0-9]*\)\].*\)"$/\1-\2"/'

Salva tudo antes do último " em \1 e o número entre [] fica em \2.

Foi mal sapiar em um tópico resolvido mas como testei aqui e ficou um pouco diferente, resolvi contribuir.

t+






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts