The UNIX and Linux Forums  

Go Back   De Unix-en Linux Forum > Top Forums > Programmeren en Shell Scripting
.
google unix.com



Programmeren en Shell Scripting Post vragen over KSH, CSH, SH, Bash, Perl, PHP, sed, awk en andere shell scripts en shell scripting talen hier.

Meer UNIX en Linux Forum Onderwerpen Misschien vindt u Helpful
Draad Thread Starter Forum Antwoorden Last Post
LD: fataal: bedrijfsverplaatsingen blijven tegen allocatable maar niet schrijfbaar secties tdallagn SUN Solaris 0 05-21-2008 08:58
uittreksel meerdere delen van een bestand rgentis UNIX for Advanced & Expert Gebruikers 1 03-18-2008 08:40 PM
opgehaalde meerdere lijnen op meerdere plaatsen in een bestand dala Programmeren en Shell Scripting 8 03-14-2008 03:28 PM
Greep Configuratiebestand met dezelfde naam van de parameter in meerdere secties potro Programmeren en Shell Scripting 7 03-05-2008 11:36
extract van een bestand formulier. tar.gz zonder UnCompressing. tar.gz bestand balireddy_77 Programmeren en Shell Scripting 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 Zoeken in deze Thread Rate Thread Display Modes
  #1 (permalink)  
Old 03-18-2008
rgentis rgentis is offline
Geregistreerde gebruiker
  
 

Join Datum: maart 2008
Posten: 4
uittreksel meerdere secties dossier

Ik heb een bestand dat ik nodig om parse meerdere secties van het bestand.

Het bestand bevat meerdere lijnen die beginnen met ST (Abunch van gegevens)
Vervolgens wordt het bestand bevat meerdere lijnen die beginnen met SE (Abunch van gegevens)

SE * 30 * 0001
ST * 810 * 0002

Ik moet alles van de lijnen tussen en met inbegrip van deze.
Ze zijn facturen.
De factuur wordt gestart met de ST-lijn en eindigt met de SE lijn.

Ik moet het uitbreken van de facturen in aparte bestanden.

Kan iemand please help me. Ik weet Grep, sedOf AWK kan dit doen, maar niet weet hoe.
Bedankt


Hier is een voorbeeld:
ST * 810 * 0001
BIG * 20080315 * 1220680417 ** LEVERING *** DI
N1 * SF * MCLANE HOGE PLAINS * 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 * CA * 20,09 ** CB * 649.251 * PI * 093 * UP * 099299711018 * RA * Nvt
TXI * ZZ * 1,53 **** 2
CTP ** RES * 0 *** MVO * 1
PID * F **** 7.11 T-SHIRT BAG 7 1 BBL
PO4 * 1000
IT1 ** 1 * EA * 33,72 ** CB * 834.861 * PI * 093 * UP * 012253022401 * RA * Nvt
TXI * ZZ * 2,57 **** 2
CTP ** RES * 0 *** MVO * 1
PID * F **** KIT BETON CHAMP
PO4 * 1
IT1 ** 1 * EA * 0,03 ** CB * 192.849 * PI * 093 * UP * 000000192842 * RA * Nvt
CTP ** RES * 0 *** MVO * 1
PID * F **** SCS 711 BK 200
PO4 * 1
IT1 ** 30 * EA * 2,59 ** CB * 001.511 * PI * 093 * UP * 025215102776 * RA * Nvt
CTP ** RES * 0 *** MVO * 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
Shamrock shamrock is offline Forum Advisor  
Geregistreerde gebruiker
  
 

Join Datum: oktober 2007
Locatie: Verenigde Staten
Posts: 753

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

  #3 (permalink)  
Old 03-18-2008
rgentis rgentis is offline
Geregistreerde gebruiker
  
 

Join Datum: maart 2008
Posten: 4
Bedankt voor je snelle reactie.

Het deed wat ik wilde. Maar de drie delen moeten worden ontleed om verschillende bestanden.

Dus je hebt
ST
gegevens
SE
Dit moet worden genomen om bestand 1
ST
gegevens
SE
Dit moet worden genomen om bestand 2

ETC .....

Ook merkte ik dat de ST en SE zijn genummerd.

ST * 810 * 0004
Dan
SE * (Aantal) * 0004
Bedankt

Laatst bewerkt door rgentis; op 03.18.2008 08:07 PM.. Reden: Toegevoegd iets
  #4 (permalink)  
Old 03-18-2008
summer_cherry summer_cherry is offline Forum Advisor  
Geregistreerde gebruiker
  
 

Join Date: Jun 2007
Locatie: Beijing China
Berichten: 1.098
nawk 'BEGIN (n \u003d 1)
0 dollar ~ / ^ ST / f \u003d (1)
0 dollar ~ / ^ W / (factuur [n] \u003d sprintf ( "% s \ n% s", factuur [n], $ 0), f \u003d 0; n \u003d n +1)
(
if (f \u003d\u003d 1)
factuur [n] \u003d sprintf ( "% s \ n% s", factuur [n], $ 0)
)
END (
for (i in factuur)
print factuur [i]>> i
close (i)
) 'Bestandsnaam
  #5 (permalink)  
Old 03-18-2008
drl's Avatar
DRL drl is offline Forum Advisor  
Geregistreerde gebruiker
  
 

Join Date: Apr 2007
Plaats: Saint Paul, MN USA / BSD, CentOS, Debian, OS X, Solaris
Posts: 717
Hoi.

Een alternatieve awk oplossing:

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

Produceren:

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

Kies de basis bestandsnaam je wilt in de variabele "naam" ... cheers, DRL
  #6 (permalink)  
Old 03-19-2008
faltooweb faltooweb is offline
Geregistreerde gebruiker
  
 

Join Date: Jan 2008
Posts: 11
uittreksel meerdere secties dossier

# - Gebruik ST waarden als de uitgang van de bestandsnaam.
awk-V out \u003d "/ dev / null" "
/ ^ ST / (gsub ( "\ \ *","-",$ 0); out \u003d $ 0". Txt ")
/ ^ SE / (close (out))
(Printf "% s \ n", $ 0>> out)
'$ INFILE

Output zal
ST-810-0001.txt
enzovoort ...

-Ramesh
Closed Thread

Bladwijzers

Labels
linux, Linux commando's, solaris

Thread Tools Zoeken in deze Thread
Zoeken in deze Thread:

Uitgebreid zoeken
Display Modes Beoordeel deze draad
Beoordeel deze draad:

Posting Regels
Jij mag niet Post Nieuwe threads
Jij mag niet na antwoorden
Jij mag niet post attachments
Jij mag niet bewerk uw berichten

BB code is Aan
Smilies zijn Aan
[IMG] code Aan
HTML-code is Uit
Trackbacks zijn Aan
Pingbacks zijn Aan
Refbacks zijn Aan




Alle tijden zijn GMT -4. Het is nu 06:02 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Vertalingen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
De Unix-en Linux Forums Copyright © 1993-2009. Alle rechten Reserved.Ad Beheer door RedTyger

Content Relevante URL's door vBSEO 3.2.0