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
Encabezado y append Tráiler balzzz UNIX for Dummies Preguntas y Respuestas 2 01-06-2008 08:19 AM
Comprobación de la cabecera y el trailer de una determinada cadena, y si no se encuentra, salir de la er_ashu UNIX for Dummies Preguntas y Respuestas 2 11-08-2007 09:55 AM
Copie todos los archivos con el sello de tiempo y quitar la cabecera, el remolque de archivo ksrams UNIX for Dummies Preguntas y Respuestas 35 07-30-2007 03:15 PM
Cuenta N º de registros en archivos de cabecera y sin contar Tráiler Documentos guiguy Programación de scripts de shell y 2 06-07-2007 01:15 PM
combinar dos archivos de texto de entrada d3ck_tm AIX 6 02-28-2006 11:23 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 11-17-2008
oordonez oordonez is offline
Usuario Registrado
  
 

Fecha: noviembre 2008
Publicaciones: 2
Combinar los archivos de texto, mientras que la combinación de las múltiples encabezado / remolque registros en cada una.

Situación:
Nuestro sistema se ejecuta actualmente un puesto de trabajo (Programa COBOL) que genera una interfaz de archivo que se enviará a uno de nuestros proveedores. Debido a que este sistema de información para los procesos de más de 100.000 empleados / jubilados (y creciente), nos gustaría multi-hilo en el trabajo de procesamiento de grupos, a fin de reducir su tiempo de ejecución. Esto funciona bien, sin embargo, estamos frente a múltiples archivos de interfaz que deben fusionarse antes de la transferencia al vendedor.


Algunos detalles sobre el archivo:
El archivo generado tiene una cabecera y el registro de un remolque, y el remolque pertinente registro total de los valores (es decir, contar con los empleados, los registros aprobados, etc.) No hay separadores de campo - se trata de campos de longitud fija.

Situación en detalle:
Nos gustaría concatenar los archivos - que es la parte fácil. ¿Qué hace que esta difícil es que tenemos que eliminar los múltiples registros de cabecera y conservar únicamente la primera. Además, tenemos que eliminar los múltiples registros de remolque, pero tenemos que añadir todo el valor total de cada remolque en el registro de un remolque le conservar al final.

Como puede inferirse tienen por ahora, he escrito algunos scripts de UNIX, pero carecen de algunos conocimientos relacionados con el registro individual y sobre el terreno de la manipulación en un archivo de texto. En particular, me gustaría saber cómo puedo definir ámbitos específicos cuando leo cada uno de los registros - estos son los campos de los registros que el remolque necesidad de mantener un total de rodadura. Además, me gustaría saber cómo puedo eliminar registros individuales.

Cualquier ayuda será muy apreciada.
  #2 (Enlace permanente)  
Old 11-17-2008
Jim McNamara jim mcnamara is offline Forum Staff  
...@...
  
 

Fecha: febrero 2004
Ubicación: NM
Mensajes: 5.759
Usted no da suficiente información para construir una correcta secuencia de comandos
Necesitamos una línea de cabecera muestra un ejemplo de línea de datos y una muestra remolque línea.
  #3 (Enlace permanente)  
Old 11-17-2008
oordonez oordonez is offline
Usuario Registrado
  
 

Fecha: noviembre 2008
Publicaciones: 2
Ejemplo de archivo

Cita:
Publicado originalmente por Jim McNamara View Post
Usted no da suficiente información para construir una correcta secuencia de comandos
Necesitamos una línea de cabecera muestra un ejemplo de línea de datos y una muestra remolque línea.
Lo sentimos! Aquí hay un archivo de ejemplo - los registros incompletos, sin embargo, ya que está bastante grande. Sin embargo, la información pertinente figura.


LOTE HEADER PRO 0724200808042008
01E000036841 LEAD05151948F 51498 10012007 YYY
02E000036841 ME 04161988F 10012007
01E000060640 MDGV12251951F 51498 1001200709302008YYY
02E000060640 RD 05061941M 1001200709302008
01E000025850 LDUO06081956F 51498 1001200709302008YYY
02E000025850 ED 10071937M 1001200709302008
01E029009859 DUA05021960F 51498 10012007 YYY
02E029009859 LD 03101989F 10012007
02E029009859 LD 02041997M 10012007
01E034008379 AEUA09181965F 51498 10012007 YYY
02E034008379 NE 11131991F 10012007
02E034008379 RE 01131993F 10012007
02E034008379 EE 09191959M 10012007
01E045005523 EUA02131964M 51498 10012007 YNN
01E046004280 DUA12041947M 51498 10012007 YYY
02E046004280 D 12121953F 10012007
02E046004280 KE 09211986M 10012007
01E048005119 BDUA01301961F 51498 10012007 YNN
01E055002147 LDUA10011964F 51498 10012007 YYY
02E055002147 RD 11121966M 10012007
02E055002147 ND 02131997F 10012007
02E055002147 JD 03111992M 10012007
01E057008796 SEUA12061975F 51498 10012007 YYY
TRAILER DE LOTE 000001150000019908042008

Detalles sobre el Registro de Remolque: el 00000115 es un valor total (número de empleados), el 00000199 es el total de los registros procesados (los empleados y dependientes). Los dos campos que había necesidad de mantener un total de móvil para todos los archivos que se fusionan.

El detalle sobre los registros son de 300 caracteres de ancho (irrelevante para lo que tenemos que hacer, pero pensé que incluirlo).

Gracias!
  #4 (Enlace permanente)  
Old 11-17-2008
Jim McNamara jim mcnamara is offline Forum Staff  
...@...
  
 

Fecha: febrero 2004
Ubicación: NM
Mensajes: 5.759
asumir esto: es un empleado 01E000036841 id y los archivos se nombran <algo>. dat
Código:
ls *.dat | read header dummy
# save copies of header
head -1 $header > tmp

awk '{ if (index($0, "HEADER") > 0 || index($0, "TRAILER") >0 ) {last= $0; continue}
       arr[$0]++; print $0   }
       END { for (i in arr) 
             {
               empcnt++ 
               lc+=arr[i]
             } 
             print empcnt, lc > "cntfile" }  ' *.dat >> tmp
awk ' { rec=sprintf("%08d%08d", $1 $2)}
         END { printf("BATCH TRAILER %s%s\n", rec, substr(last, length(last)-7) } ' cntfile >> tmp
mv tmp employee.dat
Esto también supone el último de ocho caracteres LOTE TRAILER son todos iguales.
  #5 (Enlace permanente)  
Old 11-17-2008
summer_cherry summer_cherry is offline Forum Advisor  
Usuario Registrado
  
 

Fecha: junio 2007
Ubicación: Beijing China
Mensajes: 1.088
hola a continuación perl puede ayudar un poco

uso: perl NUM a.pl archivo1 archivo2 [aquí NUM indicar cuántas líneas será encabezado]
Código:
a:
*****
line 1
line 2
1 2 3 4 5
Código:
b:
*****
line 3
line 4
9 8 7 6 5
salida:
Código:
*****
line 1
line 2
line 3
line 4
10 10 10 10 10
Código:
$header=shift;
undef $/;
my(@head,@body,@foot);
while($file=shift){
	open FH,"<$file" or die "Can not open file $_";
	my $str=<FH>;
	close FH;
	my @temp=split("\n",$str);		
	for( my $i=0;$i<$header;$i++){
		push @head,$temp[$i] if ($#head<$header-1);
	}
	for(my $j=$header;$j<$#temp;$j++){
		push @body,$temp[$j];
	}
	my @footer = split(" ",$temp[$#temp]);
	for($k=0;$k<=$#footer;$k++){
		$foot[$k]=$foot[$k]+$footer[$k];
	}
}
print join "\n",@head;
print "\n",join "\n",@body;
print "\n",join " ",@foot;
Closed Thread

Marcadores

Etiquetas
perl, perl cambio, turno, cambio de perl

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 07:39 AM.


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