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
No es capaz de insertar los datos a través de crontab megh Sun Solaris 2 12-29-2008 08:36 AM
No se puede insertar datos megh Sun Solaris 1 12-05-2008 12:20 AM
no Inserte los datos de. dat a. xls alguien puede ayudarme kreddy2003 Programación de scripts de shell y 1 05-28-2008 05:33 AM
me ayudan a insertar los datos Babu @ depósito UNIX for Dummies Preguntas y Respuestas 10 10-24-2006 02:25 AM
sed, insertar datos de un archivo a otro? ctcuser Programación de scripts de shell y 4 05-03-2005 01:43 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 03-17-2009
aemunathan aemunathan is offline
Usuario Registrado
  
 

Fecha: Mayo 2008
Puestos: 75
¿Cómo insertar algunos datos antes del campo en una fila de datos en función de los valores en la fila

Hola

Tengo que hacer alguna cosa como "encontrar e insertar antes de que" en un archivo que contiene muchos registros. Esto quedará claro con el siguiente ejemplo.

El original de registro de datos debe ser algo como esto
Código:
60119827  RTMS_LOCATION_CDR    INSTANT_POSITION_QUERY    1236574686123083rtmssrv7      20090309102806279           441           442
           783           WEB       1568          GMLC919443259137    FAILURE6         1236574665595654lessrv1
pero debido a algunos errores del sistema genera el archivo tiene una información que falta y parece que

Código:
60119827  RTMS_LOCATION_CDR    INSTANT_POSITION_QUERY    1236574686123083rtmssrv7      20090309102806279                         442
           783           WEB       1568          GMLC919443259137    FAILURE6         1236574665595654lessrv1
tanto tiene 248 charaters longitud. pero en el segundo registro de una falta de datos, es decir 441

i necesidad de insertar 441 exactamente en esa posición si 442 está disponible como próxima datos.
su caso, alguna cosa como las declaraciones ...

i se tengan valores diferentes en vez de 442 y sus correspondientes datos de la posición anterior

Cómo ir sobre esto ... cualquiera que me ayude a cabo ...
Estoy teniendo muchos los archivos de error como este para ser tratados, por lo tanto puedo hacer nada como subir en un PP e insertar los datos basados en los valores de la fila en la posición i dijo antes (442)

Ayúdame!
  #2 (Enlace permanente)  
Old 03-17-2009
vgersh99's Avatar
vgersh99 vgersh99 is offline Forum Staff  
Moderador
  
 

Fecha: febrero 2005
Localización: Boston, MA
Mensajes: 5.122
Cita:
Publicado originalmente por aemunathan
i se tengan valores diferentes en vez de 442 y sus correspondientes datos de la posición anterior
¿Cómo saber dónde exactamente a insertar la falta de "datos"?
¿Cómo se sabe que los desaparecidos'441 'debe ser rodeado de espacios n / pestañas de la izquierda y los espacios m / pestañas a la derecha?
  #3 (Enlace permanente)  
Old 03-17-2009
dariyoosh's Avatar
dariyoosh dariyoosh is offline
Usuario Registrado
  
 

Fecha: marzo 2009
Ubicación: Irán (Teherán)
Puestos: 44
Hola,

Como se dijo, que realmente tienen que definir un modelo o estructura de su archivo incluido el número exacto de campo donde los datos se supone que debe ser modificado o, al menos, un grupo de valores específicos según el cual el guión tiene que buscar en el archivo y añadir lo que falta.

Sólo para darle una primera idea, si los valores son 441 y 442, entonces el siguiente script KornShell hacer el trabajo

Código:
#!/bin/ksh

RESULT=""

while read LINE
do
    for ITERATOR in $LINE
    do
        if [[ $ITERATOR = "442"  ]]
        then
            RESULT="$RESULT 441 $ITERATOR"
        else
            RESULT="$RESULT $ITERATOR"
        fi
    done
    RESULT="$RESULT\n"
done < $1

print "$RESULT" > $1
Por lo tanto, si hay varios valores, se puede especificar en el bucle for.

Sin embargo, esto funciona si y sólo si el archivo en su delimitadores son los valores por defecto de la Federación, es decir, \ n \ t ''.

Recuerdos,
  #4 (Enlace permanente)  
Old 03-18-2009
aemunathan aemunathan is offline
Usuario Registrado
  
 

Fecha: Mayo 2008
Puestos: 75
Hola
donde puedo mencionar el nombre del archivo a leer las líneas de ... en ur guión.
  #5 (Enlace permanente)  
Old 03-18-2009
dariyoosh's Avatar
dariyoosh dariyoosh is offline
Usuario Registrado
  
 

Fecha: marzo 2009
Ubicación: Irán (Teherán)
Puestos: 44
Cita:
Publicado originalmente por aemunathan View Post
Hola
donde puedo mencionar el nombre del archivo a leer las líneas de ... en ur guión.
Obviamente en la línea de comandos, por ejemplo, si el script es el nombre del archivo myscript.ksh y su nombre de archivo es mi_archivo escribir:

$. / Myscript.ksh miarchivo
  #6 (Enlace permanente)  
Old 03-18-2009
aemunathan aemunathan is offline
Usuario Registrado
  
 

Fecha: Mayo 2008
Puestos: 75
Hola

Su trabajo, pero hay reajuste en el espaciamiento de los datos.

Los datos existentes posiciones no deben ser alteradas y el número de 248 caracteres debe mantenerse en el resultado demasiado

Habrá espacios en blanco al final de cada línea y entre los datos también. el espacio en blanco indiactes no hay datos para ese campo.

De hecho hay algunos nombres de campo por los informes que se generan, si este campo no está disponible en el informe que habrá espacio en blanco para hablar de ello.

Tengo que mantener la longitud de 248 caracteres. Dado que este archivo será enviado para su formato a otro formato en otro servidor. De modo que los datos tiene que estar intacto.

debe haber 11 espacios en blanco después de la fecha y hora: 20090309102806279
después de que tengo que insertar el 441 si 442 está presente.
  #7 (Enlace permanente)  
Old 03-18-2009
Goldorakk's Avatar
Goldorakk Goldorakk is offline
Usuario Registrado
  
 

Fecha: febrero 2009
Lugar: Francia
Puestos: 43
Es muy difícil en la secuencia de comandos de shell para manipular la línea con espacios ... Pruebe este código y el lanzamiento como:. / Myscript infile OUTFILE

441/442 asumir el valor de las posiciones 116 y 130.
Si algunas líneas contiene un carácter #, el cambio en el guión con otro carácter no utilizado.

Código:
#!/bin/ksh

POS1=116 ; VAL1=441
POS2=130 ; VAL2=442

VAL_LEN=3

XPOS1=$((POS1 + $VAL_LEN - 1))
XPOS2=$((POS2 + $VAL_LEN - 1))

echo POS1=$POS1,XPOS1=$XPOS1
echo POS2=$POS2,XPOS2=$XPOS2

infile=$1
outfile=$2

NBL=$(wc -l $infile)
NBC=0

while [ $NBC -lt $NBL ]
do
        (( NBC = NBC + 1 ))

        xval1=$(head -$NBC $infile | tail -1 | cut -b$POS1-$XPOS1)
        xval2=$(head -$NBC $infile | tail -1 | cut -b$POS2-$XPOS2)

        if [ "$xval2" = "$VAL2" ]
        then
                if [ "$xval1" = "$VAL1" ]
                then
                        head -$NBC $infile | tail -1 >> $outfile
                else
                        # Must replace with $VAL1

                        echo "Must replace on line "$NBC

                        k1=$(head -$NBC $infile | tail -1 | sed 's/ /#/g')
                        (( ZPOS1 = POS1 - 1 ))
                        k2=$(echo $k1 | cut -b1-$ZPOS1)
                        (( ZPOS1 = XPOS1 + 1 ))
                        k3=$(echo $k1 | cut -b$ZPOS1-)
                        
                        echo "${k2}${VAL1}${k3}" | sed 's/#/ /g' >> $outfile
                fi
        else
                head -$NBC $infile | tail -1 >> $outfile
        fi
done
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 05:37 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