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
La conversión de archivos gehlnar Programación de scripts de shell y 4 04-17-2009 08:47 AM
Conversión de archivos sridhar_423 Programación de scripts de shell y 2 03-16-2009 04:47 PM
A la conversión de archivos ASCII mora UNIX para usuarios avanzados y expertos 4 03-31-2008 01:29 PM
Xhtml utilidad de conversión de archivos a archivo PostScript dattatray.b Sun Solaris 0 08-25-2005 07:36 AM
la conversión de archivos hipo UNIX for Dummies Preguntas y Respuestas 1 07-24-2001 10:24 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 04-23-2009
gehlnar gehlnar is offline
Usuario Registrado
  
 

Fecha: enero 2009
Puestos: 47
La conversión de archivos y awk

Hola a todos,
Estoy confundida con la salida del archivo de entrada, y estoy por debajo de comando en la secuencia de comandos para obtener los resultados esperados.
También quiero añadir otra condición utilizando lógica Y (& &) en lugar de $ 2 \u003d\u003d "L" ($ 4 \u003d 0 - $ 4) como $ 2 \u003d\u003d "L" & & $ 3 \u003d\u003d "L" ($ 4 \u003d 0 - $ 4) pero tengo algunas awk error.
Por favor alguien puede asesorar sobre esto por favor?


Código:
 
cat $FILENAME |grep "^PL"|tr -d '\015'|sort -k1,2|nawk -F'|' 'BEGIN {OFS="~"}$2=="L"{$4=0-$4};$6=="COM"?$6="SHS":$6="FMT";{arr[$1"~"$5"~"$6]+=$4} END {for (i in arr) {print i,arr[i]}}'>$TEMPFILE
Input File 
============
ISIN|BL|STATUS|QTY|SNAME|CLASS
PLKGHM000017|B|L|85000|KGHM|COM
PLPKO0000016|B|L|310000|PKO S.A.|COM
|B|L|0||
PLKGHM000017|L|L|35000|KGHM|COM
PL0000101937|B|L|100000|DS1110|GOV
|L|L|0||
PLKGHM000017|L|L|40000|KGHM|COM
PLPKO0000016|L|L|290000|PKO S.A.|COM
Present Output
==============
PL0000101937~B~L~100000~DS1110~FMT
PLKGHM000017~B~L~85000~KGHM~SHS
PLKGHM000017~L~L~-35000~KGHM~SHS
PLKGHM000017~L~L~-40000~KGHM~SHS
PLPKO0000016~B~L~310000~PKO S.A.~SHS
PLPKO0000016~L~L~-290000~PKO S.A.~SHS
PLPKO0000016~PKO S.A.~SHS~20000
PL0000101937~DS1110~FMT~100000
PLKGHM000017~KGHM~SHS~10000
Expected Output
==============
PLPKO0000016~PKO S.A.~SHS~20000
PL0000101937~DS1110~FMT~100000
PLKGHM000017~KGHM~SHS~10000

  #2 (Enlace permanente)  
Old 04-23-2009
devtakh devtakh is offline
Usuario Registrado
  
 

Fecha: octubre 2007
Ubicación: Bangalore
Puestos: 514
Cita:
Publicado originalmente por gehlnar View Post
Hola a todos,
Estoy confundida con la salida del archivo de entrada, y estoy por debajo de comando en la secuencia de comandos para obtener los resultados esperados.
También quiero añadir otra condición utilizando lógica Y (& &) en lugar de $ 2 \u003d\u003d "L" ($ 4 \u003d 0 - $ 4) como $ 2 \u003d\u003d "L" & & $ 3 \u003d\u003d "L" ($ 4 \u003d 0 - $ 4) pero tengo algunas awk error.
Por favor alguien puede asesorar sobre esto por favor?


Código:
 
cat $FILENAME |grep "^PL"|tr -d '\015'|sort -k1,2|nawk -F'|' 'BEGIN {OFS="~"}$2=="L"{$4=0-$4};$6=="COM"?$6="SHS":$6="FMT";{arr[$1"~"$5"~"$6]+=$4} END {for (i in arr) {print i,arr[i]}}'>$TEMPFILE
Input File 
============
ISIN|BL|STATUS|QTY|SNAME|CLASS
PLKGHM000017|B|L|85000|KGHM|COM
PLPKO0000016|B|L|310000|PKO S.A.|COM
|B|L|0||
PLKGHM000017|L|L|35000|KGHM|COM
PL0000101937|B|L|100000|DS1110|GOV
|L|L|0||
PLKGHM000017|L|L|40000|KGHM|COM
PLPKO0000016|L|L|290000|PKO S.A.|COM
Present Output
==============
PL0000101937~B~L~100000~DS1110~FMT
PLKGHM000017~B~L~85000~KGHM~SHS
PLKGHM000017~L~L~-35000~KGHM~SHS
PLKGHM000017~L~L~-40000~KGHM~SHS
PLPKO0000016~B~L~310000~PKO S.A.~SHS
PLPKO0000016~L~L~-290000~PKO S.A.~SHS
PLPKO0000016~PKO S.A.~SHS~20000
PL0000101937~DS1110~FMT~100000
PLKGHM000017~KGHM~SHS~10000
Expected Output
==============
PLPKO0000016~PKO S.A.~SHS~20000
PL0000101937~DS1110~FMT~100000
PLKGHM000017~KGHM~SHS~10000
puede presentar una muestra de la producción que se espera aquí? Desde su puesto, no está claro lo que usted está tratando de lograr.


¡salud!,
Devaraj Takhellambam
  #3 (Enlace permanente)  
Old 04-23-2009
gehlnar gehlnar is offline
Usuario Registrado
  
 

Fecha: enero 2009
Puestos: 47
Hola,

Este es el resultado esperado.

Resultado esperado
\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d
PKO SA PLPKO0000016 ~ ~ ~ 20000 SHS
PL0000101937 ~ ~ DS1110 FMT ~ 100000
PLKGHM000017 ~ ~ KGHM SHS ~ 10000

Pero si ves mi post original que estoy recibiendo, pero junto con otros registros. Por favor, hágamelo saber si usted tiene más de consultas sobre este tema.

¡Salud!,
gehlnar


  #4 (Enlace permanente)  
Old 04-23-2009
vgersh99's Avatar
vgersh99 vgersh99 is online now Forum Staff  
Moderador
  
 

Fecha: febrero 2005
Localización: Boston, MA
Mensajes: 5.131
Usted realmente no necesita 'gato', 'grep' etc ... - Awk puede hacerlo todo en sí.

nawk-f geh.awk miarchivo

geh.awk:

Código:
BEGIN {
  FS="|"
  OFS="~"
}
!/^PL/ { next }
$2=="L" && $3=="L" {$4=0-$4}
{
  $6=($6=="COM")?"SHS":"FMT"
  arr[$1 OFS $5 OFS $6]+=$4
}
END {
  for (i in arr)
    print i,arr[i]
}

Pero no estoy espera obtener su producción, aunque he intentado seguir el código.
  #5 (Enlace permanente)  
Old 04-23-2009
gehlnar gehlnar is offline
Usuario Registrado
  
 

Fecha: enero 2009
Puestos: 47
Gracias Vgersh, tengo el código correcto según su consejo.

Estoy recibiendo los resultados esperados si uso awk operación es decir, dos veces por el almacenamiento de la matriz antes de la operación salida
y el nuevo archivo i si usa el arreglo que estoy recibiendo operación salida correcta.

Pero como yo estaba usando awk dos veces, pensé que de la combinación. ¿Es algo así como tubería en awk?


Así será como primero este archivo ..


Código:
PL0000101937~B~L~100000~DS1110~FMT
PLKGHM000017~B~L~85000~KGHM~SHS
PLKGHM000017~L~L~-35000~KGHM~SHS
PLKGHM000017~L~L~-40000~KGHM~SHS
PLPKO0000016~B~L~310000~PKO S.A.~SHS
PLPKO0000016~L~L~-290000~PKO S.A.~SHS

y luego realice la operación de conjunto sobre este cálculo, pero mi pregunta es esta no puede llevarse a cabo mediante una operación de awk.
  #6 (Enlace permanente)  
Old 04-23-2009
vgersh99's Avatar
vgersh99 vgersh99 is online now Forum Staff  
Moderador
  
 

Fecha: febrero 2005
Localización: Boston, MA
Mensajes: 5.131
Yo no seguir bastante lo que está haciendo - lo siento.
¿Podría publicar los pasos y la modificación del código, por favor?
  #7 (Enlace permanente)  
Old 04-23-2009
gehlnar gehlnar is offline
Usuario Registrado
  
 

Fecha: enero 2009
Puestos: 47
vgersh,

Paso 1: inicial de conversión de archivos de base de cálculo

Código:
cat INPUTFILE |tr -d '\015'|sort -k1,2|nawk -F'|' 
'BEGIN {OFS="~"}!/^PL/{next}$2=="L" && $3=="L"
{$4=0-$4};$6=="COM"?$6="SHS":$6="FMT"{print $0}'>TEMPFILE

Paso 2: En la realidad el cálculo para obtener los resultados esperados mediante la producción por encima de tempfile

Código:
 awk -F'~' '{OFS="~"}{arr[$1OFS$5OFS$6]+=$4} END 
  {for (i in arr) {print i,arr[i]}}'<TEMPFILE>EXPECTEDFILE

Estoy utilizando dos medidas antes mencionadas en un script, la esperanza que tienes una idea de ella y mi idea era combinar
estos dos pasos en uno.

¡Salud!,
gehlnar
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 01:48 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