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
Het lezen van een bestand en het schrijven van de naam van het bestand naar een param bestand. thebeginer UNIX for Advanced & Expert Gebruikers 1 10-05-2007 05:38 PM
Gemorst excel-bestand in een unix Soumya Dash Programmeren en Shell Scripting 1 09-25-2006 03:56
Reading bestandsnamen uit een bestand en het uitvoeren van de relatieve bestand van de shell-script anushilrai Programmeren en Shell Scripting 4 03-10-2006 05:25

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 11-20-2007
deep_kol deep_kol is offline
Geregistreerde gebruiker
  
 

Join Date: Jun 2007
Posts: 14
Hoe gemorst een bestand

Hoi,
Ik heb een bestand, abc.txt. zoals

abc.txt
\u003d\u003d\u003d\u003d\u003d\u003d\u003d
KOKRS EL01 RLDNR M2 RRCTY 1
Venn 100
Boekjaar 2007
Versie PW3
Valuta USD
1 2 3 4
1 2 3 4
BA Rekeningnummer winst Ctr MRA jan-feb-TC TC
Een 93010000 1530 152 1429793
Een 93010000 9999 403 0 0 0
Een 93010000 9999 404 -142
Een 93010000 9999 411 0 0 0
Een 93010000 9999 465 214538 214538 6114330
Een 93010000 9999 487 0 -207918
Een 93010000 471 502 0 0 0
Een 93010000 9999 502 0 0 0

KOKRS EL01 RLDNR M2 RRCTY 1
152 Wetboek van Vennootschappen
Boekjaar 2007
Versie PW3
Valuta EUR
1 2 3 4
1 2 3 4
BA Rekeningnummer winst Ctr MRA jan-feb-TC TC
Een 93010000 1200 152 0 0 0
Een 93010000 9999 152 -57885 -16511 -537549
KOKRS EL01 RLDNR M2 RRCTY 1
.......
..... 500 lijnen als volgt

Ik heb om dit bestand gesplitst in verschillende bestanden volgens het Wetboek van Vennootschappen.

ex:

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
Venn 100
Boekjaar 2007
Versie PW3
Valuta USD
1 2 3 4
1 2 3 4
BA Rekeningnummer winst Ctr MRA jan-feb-TC TC
Een 93010000 1530 152 1429793
Een 93010000 9999 403 0 0 0
Een 93010000 9999 404 -142
Een 93010000 9999 411 0 0 0
Een 93010000 9999 465 214538 214538 6114330
Een 93010000 9999 487 0 -207918
Een 93010000 471 502 0 0 0
Een 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
152 Wetboek van Vennootschappen
Boekjaar 2007
Versie PW3
Valuta EUR
1 2 3 4
1 2 3 4
BA Rekeningnummer winst Ctr MRA jan-feb-TC TC
Een 93010000 1200 152 0 0 0
Een 93010000 9999 152 -57885 -16511 -537549



Kindly stel me laten zien hoe het gemorste via Unix shell-programma.

Thanks in advance!
  #2 (permalink)  
Old 11-20-2007
vgersh99's Avatar
vgersh99 vgersh99 is offline Forum Staff  
Moderator
  
 

Join Date: Feb 2005
Locatie: Boston, MA
Berichten: 5.122
nawk-f deep.awk abc.txt

deep.awk:
Code:
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 (permalink)  
Old 11-20-2007
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: 711
Hoi.

Commando csplit is ontworpen voor deze:
Code:
#!/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
Produceren:
Code:
% ./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
Zien man csplit voor meer informatie ... cheers, DRL
  #4 (permalink)  
Old 11-20-2007
vgersh99's Avatar
vgersh99 vgersh99 is offline Forum Staff  
Moderator
  
 

Join Date: Feb 2005
Locatie: Boston, MA
Berichten: 5.122
het moet een GNU-ed csplit - niet vliegen op Solaris.
Plus de naamgevingsconventie voor aangemaakte bestanden is niet wat de OP wilde.
Cool idee al - like it!
  #5 (permalink)  
Old 11-20-2007
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: 711
Hoi, vgersh99.
Citaat:
Oorspronkelijk geplaatst door vgersh99 View Post
het moet een GNU-ed csplit - niet vliegen op Solaris.
Plus de naamgevingsconventie voor aangemaakte bestanden is niet wat de OP wilde.
Cool idee al - like it!
Bedankt voor de heads-up. Ja, het is GNUcoreutils - csplit. Ik weet zeker dat wanneer ik terug was dat dagelijks gebruik van Solaris csplit beschikbaar was. Als het niet werkt, hoe is het mislukt?

Ik probeerde het op een FreeBSD 4.11-systeem, en het heeft slechts een bloedarm splitsen met een patroon-match toegevoegd op, maar geen csplit (evenmin bestaat op OS X). De GNUlange opties meestal kan worden vervangen door single-dash opties.

Het zou een ander proces voor het onttrekken van de string aan de bestandsnaam te maken, maar dat is een goede oefening voor het OP ... cheers, DRL
  #6 (permalink)  
Old 11-20-2007
deep_kol deep_kol is offline
Geregistreerde gebruiker
  
 

Join Date: Jun 2007
Posts: 14
Hallo Vrienden,
Bedankt voor je hulp.
Ik ben beginner tot Unix. Ik werk in ksh en csh.
nu youuplease uitleggen hoe dat uit te voeren.
abc.txt is mijn bestandsnaam.

DRL uw oplossing lijkt te zijn oke. maar ik ben niet in staat om het uit te voeren.
  #7 (permalink)  
Old 11-20-2007
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
addict
  
 

Join Date: Jan 2007
Locatie: Варна, България / Milano, Italia
Berichten: 2.875
Een ander:

Code:
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
Gebruik nawk op Solaris.

Met sommige Awk implementaties (zoals XPG Awk op Solairs),
je moet duidelijker worden geformuleerd:

Code:
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's voorvoegsel heeft meer zin, natuurlijk.

Laatst bewerkt door radoulov; op 11.20.2007 06:38 PM.. Reden: ps
Closed Thread

Bladwijzers

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 03:16.


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 voorbehouden.

Content Relevante URL's door vBSEO 3.2.0