![]() |
Hola y bienvenida de los Estados Unidos a la UNIX y Linux Foros! Gracias por su visita y formar parte de nuestra comunidad global.
|
|
google unix.com
|
|||||||
| Foros | Registro | Reglas de los Foros | Enlaces | Álbumes | Preguntas más frecuentes | Lista de miembros | Calendario | Búsqueda | Puestos de hoy | Marcar Foros Como Leídos |
| 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 |
![]() |
|
|
Linkback vínculo | Herramientas de hilo | Buscar en este Hilo | Tasa de Hilo | Modos de visualización |
|
|
|
||||
|
¿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
Código:
60119827 RTMS_LOCATION_CDR INSTANT_POSITION_QUERY 1236574686123083rtmssrv7 20090309102806279 442
783 WEB 1568 GMLC919443259137 FAILURE6 1236574665595654lessrv1
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! |
|
|||||
|
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
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, ![]() |
|
||||
|
Hola
donde puedo mencionar el nombre del archivo a leer las líneas de ... en ur guión. |
|
|||||
|
Cita:
$. / Myscript.ksh miarchivo |
|
||||
|
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. |
|
|||||
|
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
|
![]() |
| Marcadores |
| Herramientas de hilo | Buscar en este Hilo |
| Modos de visualización | Vota a este hilo |
|
|