The UNIX and Linux Forums  

Go Back   El UNIX y Linux Foros > Arriba Foros > Programación de scripts de shell y
.
google unix.com



Programación de scripts de shell y Plantear preguntas sobre KSH, CSH, SH, BASH, PERL, PHP, SED, AWK y otros scripts de shell y lenguajes de script de shell aquí.

Más UNIX y Linux Foro Temas usted puede encontrar útiles
Hilo Hilo para principiantes Foro Respuestas Último mensaje
Comportamiento extraño de script en crontab PilotGoose Programación de scripts de shell y 1 06-26-2008 10:54 AM
Ayuda con mi script raro! kdyzsa Programación de scripts de shell y 1 06-15-2008 11:39 PM
Sudo extraño comportamiento geomonap UNIX para usuarios avanzados y expertos 1 02-03-2006 05:08 PM
ninguna explicación para este comportamiento script de shell xiamin Programación de scripts de shell y 9 11-09-2001 01:13 PM
Guión extraño Duckman UNIX for Dummies Preguntas y Respuestas 2 03-14-2001 01:53 PM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
Linkback vínculo Herramientas de hilo Buscar en este Hilo Tasa de Hilo Modos de visualización
  #1 (Enlace permanente)  
Old 08-30-2008
Peetrus Peetrus is offline
Usuario Registrado
  
 

Fecha: agosto 2008
Publicaciones: 2
Extraño comportamiento en la secuencia de comandos de sed

He escrito un pequeño script para sustituir determinadas palabras en todos los los archivos en un directorio.


Código:
#!/bin/sh

#Get list of files to be edited

file_list=`ls -p`

for i in $file_list
do
echo "Processing $i"

alteredi=`echo "$i" | sed -e 's/\//d/'`

if [ $i = $alteredi ]
then
	if [ $i != "maketest" ]
	then
	#actual altering
	
	cat $i | sed -e "s/login\//login.tst\//" > $i
	cat $i | sed -e "s/cyberkd\//cyberkd.tst\//" > $i
	cat $i | sed -e "s/\/db_connect.inc.php/\/testdb_connect.inc.php/" > $i
	echo "  $i has been altered"
	else
	echo "  Not altering myself"
	fi

else
echo "  Not altering directories"
fi

done

Ahora, cuando ejecute este script como un usuario normal, sólo la primera de 4KB se procesa el archivo. Por lo tanto, todos los archivos de más de 4 KB se cortan a la mitad. El resto de octetos se acaba de dejar fuera del nuevo archivo. Cuando corría el script como root, 8KB fueron procesados. ¿Hay alguna forma de proceso de la totalidad de los archivos?

Cuando un gato grande archivo de texto todo el archivo se imprimirá en mi pantalla.

Gracias de antemano.
  #2 (Enlace permanente)  
Old 08-30-2008
Franklin52 Franklin52 is offline Forum Staff  
Moderador
  
 

Fecha: febrero 2007
Mensajes: 4.346
No leer y escribir en el mismo archivo y el uso de gatos con sed es redundante, reemplace estas líneas:


Código:
cat $i | sed -e "s/login\//login.tst\//" > $i
cat $i | sed -e "s/cyberkd\//cyberkd.tst\//" > $i
cat $i | sed -e "s/\/db_connect.inc.php/\/testdb_connect.inc.php/" > $i

con:


Código:
sed -e "s/login\//login.tst\//" -e "s/cyberkd\//cyberkd.tst\//" -e "s/\/db_connect.inc.php/\/testdb_connect.inc.php/" "$1" > temp.file
mv temp.file "$1"

Si está sed versión-i apoya la bandera puede editar el archivo en su lugar sin utilizar un archivo temporal.


Código:
sed -i -e "s/login\//login.tst\//" -e "s/cyberkd\//cyberkd.tst\//" -e "s/\/db_connect.inc.php/\/testdb_connect.inc.php/" "$1"

Recuerdos

Última edición por Franklin52; al 08-30-2008 08:52 AM..
  #3 (Enlace permanente)  
Old 08-30-2008
Peetrus Peetrus is offline
Usuario Registrado
  
 

Fecha: agosto 2008
Publicaciones: 2
Gracias. ¡Funciona!
Closed Thread

Marcadores

Etiquetas
gato, sed, depósito

Herramientas de hilo Buscar en este Hilo
Buscar en este Hilo:

Búsqueda avanzada
Modos de visualización Vota a este hilo
Vota a este hilo:

Normas de envío
puede que no nuevo puesto de hilos
puede que no enviar respuestas
puede que no enviar archivos adjuntos
puede que no editar sus puestos

Código BB es Encendido
Emoticones son Encendido
[IMG] código Encendido
Código HTML es Apagado
Trackbacks son Encendido
Pingbacks son Encendido
Refbacks son Encendido




Todas las horas son GMT -4. La hora es 08:33 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traducciones de idiomas Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Estudios
El UNIX y Linux Foros Contenido Copyright © 1993-2009. Todos los derechos Reserved.Ad Gestión por RedTyger

Las direcciones URL de contenido vBSEO 3.2.0