![]() |
|
google unix.com
|
|||||||
| Forums | Registreer | Forum Regels | Links | Albums | Veelgestelde vragen | Ledenlijst | Kalender | Zoeken | Today's Posts | Markeer forums als gelezen |
| 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 |
![]() |
|
|
LinkBack | Thread Tools | Zoeken in deze Thread | Rate Thread | Display Modes |
|
|
|
||||
|
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! |
|
|||||
|
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
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
|
|
|||||
|
Hoi, vgersh99.
Citaat:
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 |
|
||||
|
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. |
|
|||||
|
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
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 |
![]() |
| Bladwijzers |
| Thread Tools | Zoeken in deze Thread |
| Display Modes | Beoordeel deze draad |
|
|