|
|
La Taberna Un lugar para conversar sobre casi cualquier tema |
|
Thread Tools | Display Modes |
12-17-2007, 06:50 PM | #11 |
Baron
Join Date: Mar 2006
Posts: 609
|
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 |
12-17-2007, 08:23 PM | #12 |
Duke
Join Date: Jan 2007
Posts: 3,939
|
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*; ¿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 |
12-17-2007, 08:38 PM | #13 |
Count
Join Date: Mar 2006
Location: Piscoleando ^^
Posts: 1,630
|
Y en español, de que jorca estamos hablando?
__________________
...TґдŋςờS... ®
Yo llevaré!... el Pisco Bendito ^^ |
12-17-2007, 08:46 PM | #14 | |
Baron
Join Date: Mar 2006
Posts: 609
|
Quote:
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 |
|
12-17-2007, 09:08 PM | #15 | |
Duke
Join Date: Jan 2007
Posts: 3,939
|
Quote:
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 @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 |
|
12-17-2007, 11:28 PM | #16 |
Duke
Join Date: Nov 2006
Location: 0x00CAFE
Posts: 3,366
|
Daggy, estás haciendo un curso a distancia o siguiendo un tutorial?
__________________
I don't have a solution, but I admire the problem. |
|
|