The UNIX and Linux Forums  
Hola y bienvenida de los Estados Unidos a la UNIX y Linux Foros! Gracias por su visita y formar parte de nuestra comunidad global.

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
Las tablas de consulta a los usuarios para encontrar la base de datos de script de shell pináculo Programación de scripts de shell y 0 04-10-2009 05:18 PM
para encontrar si consulta de actualización se realiza correctamente o no utiliza secuencias de comandos Ksh ali560045 Programación de scripts de shell y 3 01-07-2009 01:41 AM
find-mtime consulta Rajat UNIX for Dummies Preguntas y Respuestas 1 07-09-2008 07:12 AM
consulta acerca de encontrar y-exec shriashishpatil UNIX para usuarios avanzados y expertos 2 04-12-2007 01:16 AM
find-perm consulta napolayan UNIX for Dummies Preguntas y Respuestas 1 11-28-2006 02:28 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 05-26-2009
lightdensity lightdensity is offline
Usuario Registrado
  
 

Fecha: mayo 2009
Publicaciones: 6
buscar y reemplazar la consulta

Hola PPL,

Estoy escribiendo un guión que encuentra varias palabras partido y reemplazarlo con nuevas palabras.
Tengo server.conf el archivo que se parece a
Código:
### Welcome to server ###
### Server address and port ###
 
Server=127.0.0.1 
### Replace Server=0.0.0.0 ###
 
ServerPort=0
### Replace ServerPort=1 ####
### Enable Server ##
 
Enable Server=1
 
### Replace Enable Server=0 ###
### END OF FILE ##
-------------------------------------------------- ---------
i ha escrito el código para que como se muestra a continuación
Código:
FILE="/opt/server.conf"
NEW_FILE="/opt/new_server.conf"
        
 IFS=""
        for line in `cat ${FILE}`; do
        #echo ${line}
        if [ -n "`echo ${line} | grep 'Server=127.0.0.1'`" ]
        then
                 echo ${line} | sed 's|Server=127.0.0.1|Server=0.0.0.0|g' >>$NEW_FILE
        elif [ -n "`echo ${line} | grep 'ServerPort=0'`" ]
        then
                echo ${line} | sed 's|ServerPort=0|ServerPort=1|g' >>$NEW_FILE
        elif [ -n "`echo ${line} | grep 'Enable Server=1'`" ]
        then
                echo ${line} | sed 's|Enable Server=1|Enable Server=0|g' >>$NEW_FILE
        else
                echo ${line} >>$NEW_FILE
        fi
        done
Sin embargo, cuando ejecuto mi script sólo reemplaza el primer partido (Server \u003d 0.0.0.0). Restantes dos partidos doesnt cambio.
No sé qué pasa con mi código.

¿Puede alguien me ayude en esto?
Gracias de antemano

Última edición por lightdensity; al 05-26-2009 12:14 PM..
  #2 (Enlace permanente)  
Old 05-26-2009
devtakh devtakh is offline
Usuario Registrado
  
 

Fecha: octubre 2007
Ubicación: Bangalore
Puestos: 514
Código:
sed '/Server=127.0.0.1/{s//Server=0.0.0.0/g}
/ServerPort=0/{s//ServerPort=1/g}
/Enable Server=1/{s//Enable Server=0/g}
' /opt/server.conf > /opt/new_server.conf
-Devaraj Takhellambam
  #3 (Enlace permanente)  
Old 05-26-2009
lightdensity lightdensity is offline
Usuario Registrado
  
 

Fecha: mayo 2009
Publicaciones: 6
Cita:
Publicado originalmente por devtakh View Post
Código:
sed '/Server=127.0.0.1/{s//Server=0.0.0.0/g}
/ServerPort=0/{s//ServerPort=1/g}
/Enable Server=1/{s//Enable Server=0/g}
' /opt/server.conf > /opt/new_server.conf
-Devaraj Takhellambam
gracias por su respuesta .. En realidad soy nuevo en scripts de shell
Código:
FILE="/opt/server.conf"
NEW_FILE="/opt/new_server.conf"
        
 IFS=""
        for line in `cat ${FILE}`; do
        #echo ${line}
        if [ -n "`echo ${line} | grep 'Server=127.0.0.1'`" ]  #grep command searches for right string
        then
                 echo ${line} | sed 's|Server=127.0.0.1|Server=0.0.0.0|g' >>$NEW_FILE
        elif [ -n "`echo ${line} | grep 'ServerPort=0'`" ]
        then
                echo ${line} | sed 's|ServerPort=0|ServerPort=1|g' >>$NEW_FILE
        elif [ -n "`echo ${line} | grep 'Enable Server=1'`" ]
        then
                echo ${line} | sed 's|Enable Server=1|Enable Server=0|g' >>$NEW_FILE
        else
                echo ${line} >>$NEW_FILE
        fi
        done
Entonces, ¿cómo averiguar que para la cadena de derecho?

gracias
  #4 (Enlace permanente)  
Old 05-26-2009
BubbaJoe's Avatar
BubbaJoe BubbaJoe is offline
Usuario Registrado
  
 

Fecha: octubre 2008
Ubicación: San Luis
Puestos: 153
IFS es su conjunto mal. El IFS \u003d "" dice que no hay separación de lo que el expediente se lee. Sólo puede utilizar IFS es en realidad hay un separador entre cada campo. Cat $ FILE Así no le da línea por línea que le dará el tiempo que el archivo como un campo a la vez. Se pongan en venta, por lo tanto, sólo 1 vez. Puesto que usted realmente desea ver en cada línea como un registro que debe usar awk o sed para buscar y reemplazar el texto.

Por lo que esto trabaje para usted que se envió por devtakh que dice todo el archivo de búsqueda y sustitución de un patrón de coincidencia con el patrón determinado para cada instancia que desea cambiar. Que se encuentra cada uno por separado y cambiar el archivo de la manera deseada.

sed '/ Server \u003d 127.0.0.1 / (s / / Server \u003d 0.0.0.0 / g)
/ ServerPort \u003d 0 / (s / / ServerPort \u003d 1 / g)
/ Active Server \u003d 1 / (s / / Habilitar Server \u003d 0 / g)
'/ Opt / server.conf> / opt / new_server.conf
  #5 (Enlace permanente)  
Old 05-26-2009
lightdensity lightdensity is offline
Usuario Registrado
  
 

Fecha: mayo 2009
Publicaciones: 6
Cita:
Publicado originalmente por BubbaJoe View Post
IFS es su conjunto mal. El IFS \u003d "" dice que no hay separación de lo que el expediente se lee. Sólo puede utilizar IFS es en realidad hay un separador entre cada campo. Cat $ FILE Así no le da línea por línea que le dará el tiempo que el archivo como un campo a la vez. Se pongan en venta, por lo tanto, sólo 1 vez. Puesto que usted realmente desea ver en cada línea como un registro que debe usar awk o sed para buscar y reemplazar el texto.
gracias por ayudar ..

¿Qué debo hacer si así lo establecido
IFS \u003d "\ n \ t"

Supongo que, cat $ FILE dará línea por línea ..

ok!! Voy a tratar a cabo .. Mientras tanto puede usted comprobar mi código restantes .. y saber si mi código es correcto o no.

gracias
  #6 (Enlace permanente)  
Old 05-26-2009
devtakh devtakh is offline
Usuario Registrado
  
 

Fecha: octubre 2007
Ubicación: Bangalore
Puestos: 514
Cita:
Publicado originalmente por lightdensity View Post
gracias por su respuesta .. En realidad soy nuevo en scripts de shell
Código:
FILE="/opt/server.conf"
NEW_FILE="/opt/new_server.conf"
        
 IFS=""
        for line in `cat ${FILE}`; do
        #echo ${line}
        if [ -n "`echo ${line} | grep 'Server=127.0.0.1'`" ]  #grep command searches for right string
        then
                 echo ${line} | sed 's|Server=127.0.0.1|Server=0.0.0.0|g' >>$NEW_FILE
        elif [ -n "`echo ${line} | grep 'ServerPort=0'`" ]
        then
                echo ${line} | sed 's|ServerPort=0|ServerPort=1|g' >>$NEW_FILE
        elif [ -n "`echo ${line} | grep 'Enable Server=1'`" ]
        then
                echo ${line} | sed 's|Enable Server=1|Enable Server=0|g' >>$NEW_FILE
        else
                echo ${line} >>$NEW_FILE
        fi
        done
Entonces, ¿cómo averiguar que para la cadena de derecho?

gracias
Será un desperdicio de recursos para utilizar el script de shell cuando sed puede manejarlo. no es necesario para comprobar si la palabra existe y si existe, y luego reemplácelo. sed puede hacer eso por ti.
Pero en caso que usted necesita hacer .. le sugiero que utilice bucle while, en vez de un bucle for con el comando cat.

Código:
FILE="/opt/server.conf"
NEW_FILE="/opt/new_server.conf"
        
       while read line
   do
        #echo ${line}
        if [ -n "`echo ${line} | grep 'Server=127.0.0.1'`" ]  #grep command searches for right string
        then
                 echo ${line} | sed 's|Server=127.0.0.1|Server=0.0.0.0|g' >>$NEW_FILE
        elif [ -n "`echo ${line} | grep 'ServerPort=0'`" ]
        then
                echo ${line} | sed 's|ServerPort=0|ServerPort=1|g' >>$NEW_FILE
        elif [ -n "`echo ${line} | grep 'Enable Server=1'`" ]
        then
                echo ${line} | sed 's|Enable Server=1|Enable Server=0|g' >>$NEW_FILE
        else
                echo ${line} >>$NEW_FILE
        fi
        done < $FILE
-Devaraj Takhellambam
  #7 (Enlace permanente)  
Old 05-27-2009
lightdensity lightdensity is offline
Usuario Registrado
  
 

Fecha: mayo 2009
Publicaciones: 6
Cita:
Publicado originalmente por devtakh View Post
Código:
sed '/Server=127.0.0.1/{s//Server=0.0.0.0/g}
/ServerPort=0/{s//ServerPort=1/g}
/Enable Server=1/{s//Enable Server=0/g}
' /opt/server.conf > /opt/new_server.conf
-Devaraj Takhellambam
Hola Devaraj Takhellambam,

Su solución funciona bien ... pero soy nuevo problema que enfrenta ahora ... En realidad no he mencionado mi archivo de entrada que es
Código:
### Welcome to server ###
### Server address and port ###
 
Server=127.0.0.1 
### Replace Server=0.0.0.0 ###
 
ServerPort=0
### Replace ServerPort=1 ####
### Enable Server ##
 
Enable Server=1
 
### Replace Enable Server=0 ###
 
Enable Agent=1
Enable ip=1
 
### Now I dont need to change above two options ###
### END OF FILE ##
Entonces, ¿qué me han puesto en práctica parece
Código:
FILE="/opt/server.conf"
NEW_FILE="/opt/new_server.conf"
    exec 0<$FILE
    while read line
do
     #echo ${line}
     if [ -n "`echo ${line} | grep 'Server=127.0.0.1'`" ]  #grep command searches for right string
     then
              echo ${line} | sed 's|Server=127.0.0.1|Server=0.0.0.0|g' >>$NEW_FILE
     elif [ -n "`echo ${line} | grep 'ServerPort=0'`" ]
     then
             echo ${line} | sed 's|ServerPort=0|ServerPort=1|g' >>$NEW_FILE
     elif [ -n "`echo ${line} | grep 'Enable Server=1'`" ]
     then
             echo ${line} | sed 's|Enable Server=1|Enable Server=0|g' >>$NEW_FILE
     else
             echo ${line} >>$NEW_FILE
     fi
     done < $FILE
Archivo de salida se parece a
Código:
Server=0.0.0.0
ServerPort=1
Enable Server=0
Así que cuando mi i ejecutar código, archivo de salida sólo contiene las cadenas que me han cambiado, hay ciertas cadenas que desea copiar en él.

Lo siento estoy molestando mucho ...

gracias
Closed Thread

Marcadores

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 10:26 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