Go Back   Champions of Regnum > Español > La Taberna

La Taberna Un lugar para conversar sobre casi cualquier tema

Reply
 
Thread Tools Display Modes
Old 12-17-2007, 06:50 PM   #11
Daggy
Baron
 
Daggy's Avatar
 
Join Date: Mar 2006
Posts: 609
Daggy is on a distinguished road
Default

algo asi modificando sobre el tuyo y dejando la validacion numerica en el ingreso



Code:
#!/bin/sh

echo "escriba el nombre del archivo al que le desea aplicar el escript"
read Archivo

#Control para que repita la pregunta si no introduce un número.

while :
do
        echo "Indique el numero de espacios con los que remplazara cada Tab"
        read Espacio

        if [ $Espacio -eq $Espacio 2> /dev/null ]; then
                break;
        fi
done

#Iniciando las operaciones. El fichero operara en la carpeta /tmp/ y sobreescribirá el fichero original al final.

cp $HOME/$Archivo /tmp/$Archivo"0";

#Por cada iteración escribe un espacio en la cadena hasta el número indicado -1.
#Una vez que llega a la iteración número indicado -1 sale del bucle y remplaza los archivos

for ((  i = 0 ;  i < $Espacio-1;  i++  ))
do
        Cadena = " ";
        
done

sed -r 's/\t/$Cadena/g' < $HOME/$Archivo >> $HOME/ArchivoTemp
    

#renombra el fichero generado

mv $HOME/ArchivoTemp $HOME/$Archivo


#elimina los archivos temporales utilzados.


rm -f /tmp/$Archivo*;
__________________
Daggy Alturian Tirador ---> PT For Ever
Laggy Alturian Barbaro ---> Even more PT

Daggy no ha iniciado sesión   Reply With Quote
Old 12-17-2007, 08:23 PM   #12
arlick
Duke
 
arlick's Avatar
 
Join Date: Jan 2007
Posts: 3,939
arlick is a jewel in the rougharlick is a jewel in the rougharlick is a jewel in the rough
Default

Tal vez funciona como lo pusiste, pero creo que deberías cambiarlo a esto.

Code:
#!/bin/sh

echo "escriba el nombre del archivo al que le desea aplicar el escript"
read Archivo

#Control para que repita la pregunta si no introduce un número.

while :
do
        echo "Indique el numero de espacios con los que remplazara cada Tab"
        read Espacio

        if [ $Espacio -eq $Espacio 2> /dev/null ]; then
                break;
        fi
done

#Iniciando las operaciones. El fichero operara en la carpeta /tmp/ y sobreescribirá el fichero original al final.

cp $HOME/$Archivo /tmp/$Archivo"0";


Espacios="";

for ((  i = 0 ;  i < $Espacio;  i++  ))
do
        Espacios=$Espacios" ";
        
done

sed -r 's/\t/$Espacios/g' < $HOME/$Archivo >> $HOME/ArchivoTemp
    

#renombra el fichero generado

mv $HOME/ArchivoTemp $HOME/$Archivo


#elimina los archivos temporales utilzados.


rm -f /tmp/$Archivo*;
Así se generan bien los espacios necesarios.

¿Para que sirve la g en sed -r 's/\t/$Espacios/g' ?
__________________
"Nunca un científico ha quemado a un religioso por afirmar a Dios sin pruebas". Manuel Toharia
"uno empieza a darse cuenta que eso de no hacer ejercicio, comer y beber como si fuese la ultima cena y mantener la figura ya no existe...". Maryan
arlick no ha iniciado sesión   Reply With Quote
Old 12-17-2007, 08:38 PM   #13
TrancoS
Count
 
TrancoS's Avatar
 
Join Date: Mar 2006
Location: Piscoleando ^^
Posts: 1,630
TrancoS will become famous soon enoughTrancoS will become famous soon enough
Default

Y en español, de que jorca estamos hablando?
__________________
...TґдŋςờS... ®
Yo llevaré!... el Pisco Bendito ^^
TrancoS no ha iniciado sesión   Reply With Quote
Old 12-17-2007, 08:46 PM   #14
Daggy
Baron
 
Daggy's Avatar
 
Join Date: Mar 2006
Posts: 609
Daggy is on a distinguished road
Default

Quote:
Originally Posted by arlick
Tal vez funciona como lo pusiste, pero creo que deberías cambiarlo a esto.

Code:
#!/bin/sh




for ((  i = 0 ;  i < $Espacio;  i++  ))
do
        Espacios=$Espacios" ";
        
done

sed -r 's/\t/$Espacios/g' < $HOME/$Archivo >> $HOME/ArchivoTemp
Así se generan bien los espacios necesarios.

¿Para que sirve la g en sed -r 's/\t/$Espacios/g' ?
Si esta bien lo que pones para generar los espacios pero , no estaria pisando la variable que hace de limite al For EDITO: no me di cuenta de la s en espacio por lo tanto no es la misma variable

La g en sed sirve para aplicar la funcion todas las veces que encuentre el parametro en este caso Tab \t
Aproposito lo probe, ambas versiones y me dan este error

25: Syntax error: Bad for loop variable, que es justamente el renglon donde esta declarado el for
???
__________________
Daggy Alturian Tirador ---> PT For Ever
Laggy Alturian Barbaro ---> Even more PT

Daggy no ha iniciado sesión   Reply With Quote
Old 12-17-2007, 09:08 PM   #15
arlick
Duke
 
arlick's Avatar
 
Join Date: Jan 2007
Posts: 3,939
arlick is a jewel in the rougharlick is a jewel in the rougharlick is a jewel in the rough
Default

Quote:
Originally Posted by Daggy
Si esta bien lo que pones para generar los espacios pero , no estaria pisando la variable que hace de limite al For EDITO: no me di cuenta de la s en espacio por lo tanto no es la misma variable

La g en sed sirve para aplicar la funcion todas las veces que encuentre el parametro en este caso Tab \t
Aproposito lo probe, ambas versiones y me dan este error

25: Syntax error: Bad for loop variable, que es justamente el renglon donde esta declarado el for
???
nuse, la segunda que te he puesto me funciona bien :S

edit: lo que ocurre con la segunda es que sustituye el tabulado por la cadena $Espacios. Faltaría saber si se puede hacer que use eso como una varible en vez de como texto, pero no idea de como hacerlo.

edit2: lo que le pasa al último que escribiste tu es que está mal declarado para tomar valor_

Code:
for ((  i = 0 ;  i < $Espacio-1;  i++  ))
do
        Cadena=" ";

done
Sin espacios.

@Trancos: tratamos de pensar en una forma sencilla para dominar el mundo :P
__________________
"Nunca un científico ha quemado a un religioso por afirmar a Dios sin pruebas". Manuel Toharia
"uno empieza a darse cuenta que eso de no hacer ejercicio, comer y beber como si fuese la ultima cena y mantener la figura ya no existe...". Maryan
arlick no ha iniciado sesión   Reply With Quote
Old 12-17-2007, 11:28 PM   #16
ArcticWolf
Duke
 
ArcticWolf's Avatar
 
Join Date: Nov 2006
Location: 0x00CAFE
Posts: 3,366
ArcticWolf is a glorious beacon of lightArcticWolf is a glorious beacon of lightArcticWolf is a glorious beacon of lightArcticWolf is a glorious beacon of lightArcticWolf is a glorious beacon of light
Default

Daggy, estás haciendo un curso a distancia o siguiendo un tutorial?
__________________
I don't have a solution, but I admire the problem.
ArcticWolf no ha iniciado sesión   Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 04:13 PM.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
NGD Studios 2002-2024 © All rights reserved