The UNIX and Linux Forums  

Go Back   UNIX e Linux Forum > Inizio Forum > Shell scripting e di programmazione
.
google unix.com



Shell scripting e di programmazione Pubblica domande su KSH, CSH, SH, Bash, Perl, PHP, sed, awk e da altri script di shell e linguaggi di scripting shell qui.

Più di UNIX e Linux Forum Argomenti potreste trovare utili
Filo Thread Starter Forum Risposte Ultimo Post
ld: fatale: allocatable contro le delocalizzazioni restano ma non-scrivibile sezioni tdallagn SUN Solaris 0 05-21-2008 08:58 AM
estratto di più sezioni di un file rgentis UNIX e avanzata per utenti esperti 1 03-18-2008 08:40 PM
Estratto linee multiple in più luoghi in un file dala Shell scripting e di programmazione 8 03-14-2008 03:28 PM
Manipolare file di configurazione con lo stesso nome del parametro in più sezioni Potrò Shell scripting e di programmazione 7 03-05-2008 11:36 AM
estrarre uno sotto forma di file. tar.gz senza Uncompressing file. tar.gz balireddy_77 Shell scripting e di programmazione 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 Thread Tools Cerca in questo Thread Rate Thread Modalità di visualizzazione
  #1 (permalink)  
Old 03-18-2008
rgentis rgentis is offline
Utente Registrato
  
 

Iscriviti Data: marzo 2008
Interventi: 4
estratto di più sezioni del file

Ho un file che ho bisogno di analizzare più sezioni dal file.

Il file contiene più righe che iniziano con ST (Abunch di dati)
Allora il file contiene più righe che iniziano con SE (Abunch di dati)

SE * 30 * 0001
ST * 810 * 0002

Ho bisogno di tutte le linee e compresi tra questi.
Si tratta di fatture.
La fattura inizia con la linea ST e termina con la SE linea.

Ho bisogno di uscire tutte le fatture in file separati.

Posso per favore qualcuno mi aiuti. So Grep, sed, O AWK può farlo, ma non si sa come.
Grazie


Ecco un esempio:
ST * 810 * 0001
BIG * 20080315 * 1220680417 ** *** FORNITURA DI
N1 * SF * MCLANE High Plains * 92 * 46120004
N1 * ST * SWC 7-11 # 57134 * 91 * 571315
N3 * E 8TH ST 2712
ODESSA N4 * * * TX 79761
RIF ST * 000134 *
ITD * 05 * 3 ***** ***** 7 NET 7
IT1 CA ** 1 * * * 20,09 ** CB 649251 PI * * * 093 * 099299711018 UP * RA * NA
ZZ TXI * 2 * 1,53 ****
PTC ** RES * 0 * 1 *** RSI
PID * F **** 7-11 T-SHIRT BORSA 1 / 7 BBL
PO4 * 1000
IT1 ** 1 * EA * 33,72 * ** CB 834861 PI * * * 093 * 012253022401 UP * RA * NA
ZZ TXI * 2 * 2,57 ****
PTC ** RES * 0 * 1 *** RSI
PID * F **** KIT CONCRETI CHAMP
PO4 * 1
IT1 ** 1 * EA * 0,03 ** * CB 192849 PI * * * 093 * 000000192842 UP * RA * NA
PTC ** RES * 0 * 1 *** RSI
PID * F **** SCS 711 BK 200
PO4 * 1
IT1 ** * 30 * 2,59 ** EA CB * 001511 * PI * 093 * UP * 025215102776 * RA * NA
PTC ** RES * 0 * 1 *** RSI
PID * F **** MAXELL T-160 PLUS VIDEO
PO4 * 1
TDS * 18454
SAC * C * G740 ******* *** 5300 *** 06 SERVIZIO
CTT * 4
SE * 30 * 0001
  #2 (permalink)  
Old 03-18-2008
trifoglio shamrock is offline Forum Advisor  
Utente Registrato
  
 

Iscriviti Data: ottobre 2007
Posizione: Stati Uniti d'America
Interventi: 753

Codice:
awk '/^ST/,/^SE/' file

  #3 (permalink)  
Old 03-18-2008
rgentis rgentis is offline
Utente Registrato
  
 

Iscriviti Data: marzo 2008
Interventi: 4
Grazie per la tua tempestiva risposta.

Essa ha fatto ciò che volevo. Tuttavia le tre sezioni devono essere analizzati a diversi file.

Quindi avete
ST
dati
SE
Ciò dovrebbe essere preso in un file 1
ST
dati
SE
Ciò dovrebbe essere preso a 2 file

ETC .....

Inoltre ho notato che la ST e SE sono numerati.

ST * 810 * 0004
Allora
SE * (Numero) * 0004
Grazie

Ultimo a cura di rgentis; al 03/18/2008 08:07 PM.. Motivo: Aggiunto qualcosa
  #4 (permalink)  
Old 03-18-2008
summer_cherry summer_cherry is offline Forum Advisor  
Utente Registrato
  
 

Iscriviti Data: giugno 2007
Ubicazione: Pechino Cina
Messaggi: 1.098
nawk 'BEGIN (n \u003d 1)
$ 0 ~ / ^ ST / f \u003d (1)
$ 0 ~ / ^ SE / (fattura [n] \u003d sprintf ( "% s \ n% s", fattura [n], $ 0), f \u003d 0; n \u003d n +1)
(
if (f \u003d\u003d 1)
fattura [n] \u003d sprintf ( "% s \ n% s", fattura [n], $ 0)
)
END (
for (i in fattura)
stampa fattura [i]>> i
close (i)
) 'File
  #5 (permalink)  
Old 03-18-2008
drl's Avatar
DRL drl is offline Forum Advisor  
Utente Registrato
  
 

Iscriviti Data: aprile 2007
Località: Saint Paul, MN USA / BSD, CentOS, Debian, OS X, Solaris
Interventi: 717
Salve.

Un supplente awk soluzione:

Codice:
#!/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

Produzione:

Codice:
% ./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

Scegli il nome del file di base che si desidera nella variabile "nome" ... cheers, DRL
  #6 (permalink)  
Old 03-19-2008
faltooweb faltooweb is offline
Utente Registrato
  
 

Iscriviti Data: gennaio 2008
Interventi: 11
estratto di più sezioni del file

# - Utilizzare ST valori come output file.
awk-v out \u003d "/ dev / null" '
/ ^ ST / (gsub ( "\ \ *","-",$ 0); $ i \u003d 0". Txt ")
/ ^ SE / (stretta (out))
(Printf "% s \ n", $ 0>> out)
'$ Infile

Uscita sarà
ST-810-0001.txt
così via ...

-Ramesh
Closed Thread

Segnalibri

Tag
linux, linux comandi, solaris

Thread Tools Cerca in questo Thread
Cerca in questo Thread:

Ricerca Avanzata
Modalità di visualizzazione Vota questo thread
Vota questo thread:

Distacco regolamento
Tu non può post nuovo thread
Tu non può inviare una risposta
Tu non può postare allegati
Tu non può modificare i tuoi post

BB codice è Su
Smilies sono Su
[IMG] codice Su
Codice HTML è Chiuso
Trackbacks sono Su
Pingbacks sono Su
Refbacks sono Su




Tutti gli orari sono GMT -4. La data di oggi è 09:21 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traduzioni Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX e Linux Forum Content Copyright © 1993-2009. Tutti i diritti Reserved.Ad di gestione da RedTyger

Contenuti pertinenti URL da vBSEO 3.2.0