The UNIX and Linux Forums  

Go Back   UNIX og Linux Forums > Top Forums > Shell programmering og Skripting
.
google unix.com



Shell programmering og Skripting Post spørsmål om ksh, csh, SH, Bash, Perl, PHP, SED, awk og ANDRE shell scripts og Shell skriptespråk her.

Mer UNIX og Linux Forum Emner Du kan finne nyttig
Tråd Tråd startet Forum Svar Siste innlegg
ld: fatal: relocations fortsatt mot allocatable men ikke skrivbar seksjoner tdallagn Sun Solaris 0 05-21-2008 08:58
trekke flere deler av en fil rgentis UNIX for Advanced & ekspertbrukere 1 03-18-2008 08:40
hentes flere linjer på flere steder i en fil dala Shell programmering og Skripting 8 03-14-2008 03:28
Håndtak konfigurasjonsfil med samme navn av Parameter i flere deler potro Shell programmering og Skripting 7 03-05-2008 11:36
Pakk ut en fil form. tar.gz uten pakke. tar.gz fil balireddy_77 Shell programmering og Skripting 2 07-10-2007 05:23

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 Søk i denne tråden Rate Thread Visningsmoduser
  #1 (permalink)  
Old 03-18-2008
rgentis rgentis is offline
Registrert bruker
  
 

Bli Date: Mar 2008
Innlegg: 4
trekke flere deler av filen

Jeg har en fil som jeg trenger å analysere flere deler fra filen.

Filen inneholder flere linjer som starter med ST (Abunch av data)
Deretter filen inneholder flere linjer som starter med SE (Abunch av data)

SE * 30 * 0001
ST * 810 * 0002

Jeg trenger alle linjene mellom og med disse.
De fakturaer.
Fakturaen starter med ST-linjen og ender med SE linje.

Jeg trenger å bryte ut av fakturaer i separate filer.

Kanne noen behage hjelpe meg. Jeg vet Grep, sedEller awk kan gjøre dette, men usikker på hvordan.
Takk


Her er et eksempel:
ST * 810 * 0001
BIG * 20080315 * 1220680417 ** Supply *** DI
N1 * SF * MCLANE HIGH Plains * 92 * 46120004
N1 * ST * SWC 7-11 # 57134 * 91 * 571315
N3 * 2712 E 8th ST
N4 * Odessa * TX * 79761
REF * ST * 000134
ITD * 05 * 3 ***** 7 ***** NET 7
IT1 ** 1 * CA * 20.09 ** CB * 649,251 * PI * 093 * UP * 099299711018 * RA * NA
TXI * zz * 1,53 **** 2
CTP ** RES * 0 *** CSR * 1
PID * F **** 7-11 T-SHIRT BAG 1 / 7 BBL
Po4 * 1000
IT1 ** 1 * EA * 33.72 ** CB * 834,861 * PI * 093 * UP * 012253022401 * RA * NA
TXI * zz * 2,57 **** 2
CTP ** RES * 0 *** CSR * 1
PID * F **** KIT BETONG CHAMP
Po4 * 1
IT1 ** 1 * EA * 0,03 ** CB * 192,849 * PI * 093 * UP * 000000192842 * RA * NA
CTP ** RES * 0 *** CSR * 1
PID * F **** SCS 711 BK 200
Po4 * 1
IT1 ** 30 * EA * 2,59 ** CB * 001,511 * PI * 093 * UP * 025215102776 * RA * NA
CTP ** RES * 0 *** CSR * 1
PID * F **** Maxell T-160 PLUS VIDEO
Po4 * 1
TDS * 18454
Sac * C * G740 *** 5300 ******* 06 *** SERVICE
CTT * 4
SE * 30 * 0001
  #2 (permalink)  
Old 03-18-2008
kløver shamrock is offline Forum Advisor  
Registrert bruker
  
 

Bli Dato: Oct 2007
Beliggenhet: USA
Innlegg: 753

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

  #3 (permalink)  
Old 03-18-2008
rgentis rgentis is offline
Registrert bruker
  
 

Bli Date: Mar 2008
Innlegg: 4
Takk for raskt svar.

Det gjorde hva jeg ville. Men de tre delene må analyseres for å til forskjellige filer.

Så du har
ST
data
SE
Dette bør tas til fil 1
ST
data
SE
Dette bør tas til fil 2

ETC .....

Også jeg merket at ST og SE er nummererte.

ST * 810 * 0004

SE * (Number) * 0004
Takk

Sist endret av rgentis; 03-18-2008 kl 08:07.. Begrunnelse: Lagt til noe
  #4 (permalink)  
Old 03-18-2008
summer_cherry summer_cherry is offline Forum Advisor  
Registrert bruker
  
 

Bli Dato: juni 2007
Sted: Beijing Kina
Innlegg: 1092
nawk 'BEGIN (n \u003d 1)
$ 0 ~ / ^ ST / (f \u003d 1)
$ 0 ~ / ^ SE / (faktura [n] \u003d sprintf ( "% s \ n% s", faktura [n], $ 0); f \u003d 0, n \u003d n +1)
(
if (f \u003d\u003d 1)
faktura [n] \u003d sprintf ( "% s \ n% s", faktura [n], $ 0)
)
END (
for (i in faktura)
Skriv ut faktura [i]>> i
close (i)
) "Filename
  #5 (permalink)  
Old 03-18-2008
drl's Avatar
drl drl is offline Forum Advisor  
Registrert bruker
  
 

Bli Dato: april 2007
Beliggenhet: Saint Paul, MN USA / BSD, CentOS, Debian, OS X, Solaris
Innlegg: 717
Hei.

En alternativ awk løsning:

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

Produksjon:

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

Velg basisfilnavnet du ønsker i variabelen "name" ... cheers, DRL
  #6 (permalink)  
Old 03-19-2008
faltooweb faltooweb is offline
Registrert bruker
  
 

Bli Date: Jan 2008
Innlegg: 11
trekke flere deler av filen

# - Bruk ST verdier som output filename.
awk-v out \u003d "/ dev / null" '
/ ^ ST / (gsub ( "\ \ *","-",$ 0); out \u003d 0 $". Txt ")
/ ^ SE / (close (ut))
(Printf "% s \ n", $ 0>> ut)
'$ INFILE

Produksjonen vil bli
ST-810-0001.txt
så videre ...

-Ramesh
Closed Thread

Hugseliste

Tags
linux, linux-kommandoer, solaris

Thread Tools Søk i denne tråden
Søk i denne tråden:

Avansert søk
Visningsmoduser Ranger denne tråden
Ranger denne tråden:

Innleggsaktivitet Regler
Du kanskje ikke poste nye tråder
Du kanskje ikke poste svar
Du kanskje ikke post vedlegg
Du kanskje ikke redigere innleggene dine

BB-kode er
Smilefjes er
[IMG] koden
HTML-koden Av
Pingbacks er
Refbacks er




Alle klokkeslett er GMT -4. Nå er klokken 03:32.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Language Translations Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. All Rights Reserved.Ad Management by RedTyger

Content Relevant nettadresser av vBSEO 3.2.0