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
ld: fatal: permanecer en contra de las deslocalizaciones allocatable pero no escrito secciones tdallagn Sun Solaris 0 05-21-2008 08:58 AM
extracto de varias secciones de un archivo rgentis UNIX para usuarios avanzados y expertos 1 03-18-2008 08:40 PM
recuperado varias líneas en varios lugares en un archivo dala Programación de scripts de shell y 8 03-14-2008 03:28 PM
Manejar archivos de configuración con el mismo nombre de parámetro en varias secciones potro Programación de scripts de shell y 7 03-05-2008 11:36 AM
extracto de un archivo de forma. tar.gz sin descompresión. archivo tar.gz balireddy_77 Programación de scripts de shell y 2 07-10-2007 05:23 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 03-18-2008
rgentis rgentis is offline
Usuario Registrado
  
 

Fecha: marzo 2008
Publicaciones: 4
extracto de varias secciones de archivo

Tengo un archivo que tengo que analizar varias secciones del archivo.

El archivo contiene varias líneas que comienzan con S (Abunch de datos)
A continuación, el archivo contiene varias líneas que comienzan con SE (Abunch de datos)

SE * 30 * 0001
ST * 810 * 0002

Necesito todas las líneas e incluyendo entre estos.
Son las facturas.
La factura se inicia con la primera línea y termina con la SE línea.

Tengo que salir de todas las facturas en archivos separados.

¿Puede alguien por favor me ayude. Sé Grep, sed, O AWK pueden hacerlo, pero no sabe cómo.
Gracias


Aquí está un ejemplo:
ST * 810 * 0001
GRANDES * 20080315 * 1220680417 ** OFERTA *** DI
* N1 * SF McLane altiplano * 92 * 46120004
* N1 * ST SWC 7-11 # 57134 * 91 * 571315
N3 * 2712 E 8 ST
N4 * ODESSA * TX * 79761
Ref. ST * 000134 *
ITD 05 * 3 * 7 ***** ***** NET 7
IT1 ** 1 * * 20,09 ** CA CB * 649251 * PI * 093 * UP * 099299711018 * RA * NA
TXI ZZ * 1,53 * **** 2
CTP ** RES RSE *** * 0 * 1
PID * F **** 7o-11o T-SHIRT BOLSA 1 / 7 BBL
PO4 * 1000
IT1 ** 1 * EA * 33,72 ** CB * 834861 * PI * 093 * UP * 012253022401 * RA * NA
TXI ZZ * 2,57 * **** 2
CTP ** RES RSE *** * 0 * 1
PID * F **** KIT DE HORMIGÓN CHAMP
PO4 * 1
IT1 ** 1 * EA * 0,03 * 192849 ** CB * PI * 093 * UP * 000000192842 * RA * NA
CTP ** RES RSE *** * 0 * 1
PID * F **** SCS 711 BK 200
PO4 * 1
IT1 EA ** 30 * ** * 2,59 * 001511 * CB PI * 093 * UP * 025215102776 * RA * NA
CTP ** RES RSE *** * 0 * 1
PID * F **** MAXELL T-160 PLUS VIDEO
PO4 * 1
TDS * 18454
SAC * C * G740 *** 5300 *** 06 ******* SERVICIO
CTT * 4
SE * 30 * 0001
  #2 (Enlace permanente)  
Old 03-18-2008
trébol shamrock is offline Forum Advisor  
Usuario Registrado
  
 

Fecha: octubre 2007
Ubicación: EE.UU.
Puestos: 753

Código:
awk '/^ST/,/^SE/' file

  #3 (Enlace permanente)  
Old 03-18-2008
rgentis rgentis is offline
Usuario Registrado
  
 

Fecha: marzo 2008
Publicaciones: 4
Gracias por su pronta respuesta.

Se hizo lo que quería. Sin embargo, las tres secciones deben ser analizadas para a diferentes archivos.

Por lo que tiene
ST
datos
SE
Esto debe ser tomado para el archivo 1
ST
datos
SE
Esto debe ser tomado a archivo 2

ETC .....

También me di cuenta de que el ST y SE están numerados.

ST * 810 * 0004
Entonces
SE * (Número) * 0004
Gracias

Última edición por rgentis; al 03-18-2008 08:07 PM.. Exposición de motivos: se agregó algo
  #4 (Enlace permanente)  
Old 03-18-2008
summer_cherry summer_cherry is offline Forum Advisor  
Usuario Registrado
  
 

Fecha: junio 2007
Ubicación: Beijing China
Mensajes: 1.089
nawk 'BEGIN (n \u003d 1)
$ 0 ~ / ^ ST / f \u003d (1)
$ 0 ~ / ^ SE / factura ([n] \u003d sprintf ( "% s \ n% s", factura [n], $ 0), f \u003d 0, n \u003d n +1)
(
if (f \u003d\u003d 1)
factura [n] \u003d sprintf ( "% s \ n% s", factura [n], $ 0)
)
FIN (
for (i en la factura)
imprimir factura [i]>> i
close (i)
) 'Filename
  #5 (Enlace permanente)  
Old 03-18-2008
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: 712
Hola.

Una solución alternativa awk:

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

# @(#) s1       Demonstrate extraction of range to separate files.

#  ____
# /
# |   Infrastructure BEGIN

echo
set -o nounset

debug=":"
debug="echo"

## The shebang using "env" line is designed for portability. For
#  higher security, use:
#
#  #!/bin/sh -

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

set +o nounset
echo "(Versions displayed with local utility \"version\")"
version >/dev/null 2>&1 && version =o $(_eat $0 $1) awk my-nl
set -o nounset

# Use nawk or /usr/xpg4/bin/awk on Solaris.

echo

FILE=${1-data1}
echo " Input file $FILE:"
cat $FILE

# |   Infrastructure END
# \
#  ---

echo
echo " Results from processing:"
awk '
BEGIN   { i = 0 }
/ST/            { i++ ; name = "file" i }
/ST/,/SE/       { print > name }
' $FILE

my-nl file?

exit 0

La producción de:

Código:
% ./s1

(Versions displayed with local utility "version")
Linux 2.6.11-x1
GNU bash, version 2.05b.0(1)-release (i386-pc-linux-gnu)
GNU Awk 3.1.4
my-nl (local) 296

 Input file data1:
ST
first invoice
SE
ST
second invoice
SE
ST
third invoice
SE

 Results from processing:

==> file1 <==

  1 ST
  2 first invoice
  3 SE

==> file2 <==

  1 ST
  2 second invoice
  3 SE

==> file3 <==

  1 ST
  2 third invoice
  3 SE

Elija la base de nombre de archivo que desea en la variable "nombre" ... cheers, DRL
  #6 (Enlace permanente)  
Old 03-19-2008
faltooweb faltooweb is offline
Usuario Registrado
  
 

Fecha: enero 2008
Puestos: 11
extracto de varias secciones de archivo

# - ST Utilice los valores de salida como el nombre de archivo.
awk-v out \u003d "/ dev / null"
/ ^ S / (gsub ( "\ \ *","-",$ 0); out \u003d $ 0". Txt ")
/ ^ SE / (cerrar (a))
(Printf "% s \ n", $ 0>>) a cabo
'$ INFILE

Producto se
ST-810-0001.txt
etc ...

-Ramesh
Closed Thread

Marcadores

Etiquetas
linux, comandos linux, solaris

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 11:41 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