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
Lectura de un archivo y escribir el nombre del archivo a un archivo de parámetros. thebeginer UNIX para usuarios avanzados y expertos 1 10-05-2007 05:38 PM
Derrame de archivo de Excel en Unix Soumya Dash Programación de scripts de shell y 1 09-25-2006 03:56 AM
Lectura de los nombres de archivo de un archivo y ejecutar el archivo familiar de script de shell anushilrai Programación de scripts de shell y 4 03-10-2006 05:25 AM

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-20-2007
deep_kol deep_kol is offline
Usuario Registrado
  
 

Fecha: junio 2007
Puestos: 14
Cómo derramado un archivo

Hola,
Tengo un archivo, abc.txt. gustar

abc.txt
\u003d\u003d\u003d\u003d\u003d\u003d\u003d
KOKRS EL01 RLDNR M2 RRCTY 1
Empresa Código 100
Año Fiscal 2007
Versión PW3
Moneda USD
1 2 3 4
1 2 3 4
Número de cuenta de beneficios de BA Ctr ARM Jan-Feb-TC TC
A 93010000 1530 152 1429793
A 93010000 9999 403 0 0 0
A 93010000 9999 404 -142
A 93010000 9999 411 0 0 0
A 93010000 9999 465 214538 214538 6114330
A 93010000 9999 487 0 -207918
A 93010000 471 502 0 0 0
A 93010000 9999 502 0 0 0

KOKRS EL01 RLDNR M2 RRCTY 1
Empresa Código 152
Año Fiscal 2007
Versión PW3
Moneda GBP
1 2 3 4
1 2 3 4
Número de cuenta de beneficios de BA Ctr ARM Jan-Feb-TC TC
A 93010000 1200 152 0 0 0
A 93010000 9999 152 -57885 -16511 -537549
KOKRS EL01 RLDNR M2 RRCTY 1
.......
..... 500 líneas como este

He derramado a este archivo en archivos diferentes según la empresa de código.

por ejemplo:

abc_COMCODE_100.txt
\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d
KOKRS EL01 RLDNR M2 RRCTY 1
Empresa Código 100
Año Fiscal 2007
Versión PW3
Moneda USD
1 2 3 4
1 2 3 4
Número de cuenta de beneficios de BA Ctr ARM Jan-Feb-TC TC
A 93010000 1530 152 1429793
A 93010000 9999 403 0 0 0
A 93010000 9999 404 -142
A 93010000 9999 411 0 0 0
A 93010000 9999 465 214538 214538 6114330
A 93010000 9999 487 0 -207918
A 93010000 471 502 0 0 0
A 93010000 9999 502 0 0 0


abc_COMCODE_152.txt
\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d
KOKRS EL01 RLDNR M2 RRCTY 1
Empresa Código 152
Año Fiscal 2007
Versión PW3
Moneda GBP
1 2 3 4
1 2 3 4
Número de cuenta de beneficios de BA Ctr ARM Jan-Feb-TC TC
A 93010000 1200 152 0 0 0
A 93010000 9999 152 -57885 -16511 -537549



Amablemente me indican cómo derramado a través de programa de shell de Unix.

Gracias de antemano!
  #2 (Enlace permanente)  
Old 11-20-2007
vgersh99's Avatar
vgersh99 vgersh99 is offline Forum Staff  
Moderador
  
 

Fecha: febrero 2005
Localización: Boston, MA
Mensajes: 5.131
nawk-f deep.awk abc.txt

deep.awk:

Código:
BEGIN {
  FS=RS=""

  prefix=substr(FILENAME, 1, index(FILENAME, ".")-1)
}
{
   root="unknown"
   for(i=1; i<=NF; i++)
      if ($i ~ "Company Code") {
         n=split($2, a, " ")
         root=a[n]
         break
      }
   out= prefix "_COMCODE_" root ".txt"
   print > out
   close(out)
}

  #3 (Enlace permanente)  
Old 11-20-2007
drl's Avatar
DRL drl is offline Forum Advisor  
Usuario Registrado
  
 

Fecha: abril 2007
Ubicación: Saint Paul, MN EE.UU. / BSD, CentOS, Debian, OS X, Solaris
Puestos: 717
Hola.

Comando csplit fue diseñado para esto:

Código:
#!/usr/bin/env sh

# @(#) s1       Demonstrate context split, csplit.

set -o nounset
echo

debug=":"
debug="echo"

## Use local command version for the commands in this demonstration.

echo "(Versions displayed with local utility \"version\")"
version >/dev/null 2>&1 && version bash csplit

echo

# Remove debris files.
rm -f xx*

FILE=${1-data1}

csplit --keep-files -z $FILE "/Company Code/-1" {*}

echo
echo " Files created:"
ls xx*

SAMPLE=xx01
echo
echo " Sample $SAMPLE:"
cat -n $SAMPLE

exit 0

La producción de:

Código:
% ./s1

(Versions displayed with local utility "version")
GNU bash 2.05b.0
csplit (coreutils) 5.2.1

1
379
218
81

 Files created:
xx00  xx01  xx02  xx03

 Sample xx01:
     1  KOKRS EL01 RLDNR M2 RRCTY 1
     2  Company Code 100
     3  Fiscal Year 2007
     4  Version PW3
     5  Currency USD
     6  1 2 3 4
     7  1 2 3 4
     8  BA Account number Profit Ctr MRA Jan-TC Feb-TC
     9  A 93010000 1530 152 1429793
    10  A 93010000 9999 403 0 0 0
    11  A 93010000 9999 404 -142
    12  A 93010000 9999 411 0 0 0
    13  A 93010000 9999 465 214538 214538 6114330
    14  A 93010000 9999 487 0 -207918
    15  A 93010000 471 502 0 0 0
    16  A 93010000 9999 502 0 0 0
    17

Ver hombre csplit para obtener detalles ... cheers, DRL
  #4 (Enlace permanente)  
Old 11-20-2007
vgersh99's Avatar
vgersh99 vgersh99 is offline Forum Staff  
Moderador
  
 

Fecha: febrero 2005
Localización: Boston, MA
Mensajes: 5.131
debe ser un GNU-ed csplit - no volar en Solaris.
Además de la convención de nomenclatura para los archivos creados no es lo que quería el OP.
Enfriar idea, aunque - como éste!
  #5 (Enlace permanente)  
Old 11-20-2007
drl's Avatar
DRL drl is offline Forum Advisor  
Usuario Registrado
  
 

Fecha: abril 2007
Ubicación: Saint Paul, MN EE.UU. / BSD, CentOS, Debian, OS X, Solaris
Puestos: 717
Hola, vgersh99.
Cita:
Publicado originalmente por vgersh99 View Post
debe ser un GNU-ed csplit - no volar en Solaris.
Además de la convención de nomenclatura para los archivos creados no es lo que quería el OP.
Enfriar idea, aunque - como éste!
Gracias por el heads-up. Sí, es GNU-coreutils csplit. Estoy seguro de que cuando yo era a diario que el uso de Solaris csplit estaba disponible. Si no funciona, ¿cómo no?

Lo he probado en un sistema FreeBSD 4.11, y tiene sólo un anémico partir con un patrón añadida el partido, pero no csplit (ni existen en OS X). El GNUa lo largo de las opciones pueden ser reemplazados con un solo guión opciones.

Se necesitaría otro proceso para extraer la cadena para que el nombre de archivo, pero eso es un buen ejercicio para el PO ... cheers, DRL
  #6 (Enlace permanente)  
Old 11-20-2007
deep_kol deep_kol is offline
Usuario Registrado
  
 

Fecha: junio 2007
Puestos: 14
Hola Amigos,
Gracias por tu ayuda.
Yo soy principiante en Unix. Estoy trabajando en ksh y csh.
ahora youuplease puede explicar que la forma de ejecutar.
abc.txt es mi nombre de archivo.

DRL su solución parece que va a ser bien. pero no soy capaz de ejecutarlo.
  #7 (Enlace permanente)  
Old 11-20-2007
radoulov's Avatar
radoulov radoulov is online now Forum Staff  
adicto
  
 

Fecha: enero 2007
Ubicación: Варна, България / Milán, Italia
Mensajes: 2.927
Otro:


Código:
awk 'FNR == 1 {
	pfx = substr(FILENAME, 1, 3) "_COMCODE_"
	}	
/^KOKRS/ {
	fn = 0
}
/^Company Code/ {
	close(fn)
	fn = pfx $3 ".txt"
	$0 = prev RS $0
	}
fn {
	print > fn
}
{
	prev = $0
}' abc.txt

Utilice nawk en Solaris.

Con algunas implementaciones Awk (como XPG Awk en Solairs),
usted debe ser más explícito:


Código:
awk 'FNR == 1 {
	pfx = substr(FILENAME, 1, 3) "_COMCODE_"
	}	
/^KOKRS/ {
	fn = 0
}
/^Company Code/ {
	close(fn)
	fn = pfx $3 ".txt"
	$0 = prev RS $0
	}
fn != 0 {
	print > fn
}
{
	prev = $0
}' abc.txt


PS vgersh99 del prefijo tiene más sentido, por supuesto.

Última edición por radoulov; al 11-20-2007 06:38 PM.. Motivo: ps
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:33 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