![]() |
|
|
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 |
| 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 |
![]() |
|
|
Linkback vínculo | Herramientas de hilo | Buscar en este Hilo | Tasa de Hilo | Modos de visualización |
|
|
|
||||
|
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
|
|
||||
|
Cita:
¡salud!, Devaraj Takhellambam |
|
||||
|
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 |
|
||||
|
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. |
|
||||
|
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 |
![]() |
| Marcadores |
| Herramientas de hilo | Buscar en este Hilo |
| Modos de visualización | Vota a este hilo |
|
|