![]() |
|
|
google unix.com
|
|||||||
| Forum | Registrera | Forum Regler | Länkar | Album | FAQ | Medlemslista | Kalender | Söka | Dagens inlägg | Markera forum som lästa |
| Shell-programmering och Skript Post frågor om ksh, CSH, SH, bash, PERL, PHP, sed, awk och andra skalskript och skal skriptspråk här. |
Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
|
||||
| Tråd | Thread Starter | Forum | Svar | Senaste Inlägg |
| Läsa en fil och skriva filnamnet till ett param fil. | thebeginer | UNIX för avancerade & Expertanvändare | 1 | 10-05-2007 05:38 |
| Spilt excel-fil i UNIX | Soumya Dash | Shell-programmering och Skript | 1 | 09-25-2006 03:56 |
| Läsa filnamn från en fil och verkställande relativa fil från shell script | anushilrai | Shell-programmering och Skript | 4 | 03-10-2006 05:25 |
![]() |
|
|
LinkBack | Thread Tools | Sök i denna tråd | Rate Thread | Visningslägen |
|
|
|
||||
|
Hur spilld en fil
Hej,
Jag har en fil, abc.txt. gilla abc.txt \u003d\u003d\u003d\u003d\u003d\u003d\u003d KOKRS EL01 RLDNR M2 RRCTY 1 Company Code 100 Verksamhetsåret 2007 Version PW3 Valuta USD 1 2 3 4 1 2 3 4 BA Kontonummer Profit Center MRA Jan-TC februari-TC Ett 93010000 1530 152 1429793 Ett 93010000 9999 403 0 0 0 Ett 93010000 9999 404 -142 Ett 93010000 9999 411 0 0 0 Ett 93010000 9999 465 214538 214538 6114330 Ett 93010000 9999 487 0 -207918 Ett 93010000 471 502 0 0 0 Ett 93010000 9999 502 0 0 0 KOKRS EL01 RLDNR M2 RRCTY 1 Company Code 152 Verksamhetsåret 2007 Version PW3 Valuta SEK 1 2 3 4 1 2 3 4 BA Kontonummer Profit Center MRA Jan-TC februari-TC Ett 93010000 1200 152 0 0 0 Ett 93010000 9999 152 -57885 -16511 -537549 KOKRS EL01 RLDNR M2 RRCTY 1 ....... ..... 500 lines like this Jag måste spillt denna fil i olika filer enligt företaget kod. 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 Company Code 100 Verksamhetsåret 2007 Version PW3 Valuta USD 1 2 3 4 1 2 3 4 BA Kontonummer Profit Center MRA Jan-TC februari-TC Ett 93010000 1530 152 1429793 Ett 93010000 9999 403 0 0 0 Ett 93010000 9999 404 -142 Ett 93010000 9999 411 0 0 0 Ett 93010000 9999 465 214538 214538 6114330 Ett 93010000 9999 487 0 -207918 Ett 93010000 471 502 0 0 0 Ett 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 Company Code 152 Verksamhetsåret 2007 Version PW3 Valuta SEK 1 2 3 4 1 2 3 4 BA Kontonummer Profit Center MRA Jan-TC februari-TC Ett 93010000 1200 152 0 0 0 Ett 93010000 9999 152 -57885 -16511 -537549 Vänlig föreslå mig hur läckte igenom Unixterminal program. Tack på förhand! |
|
|||||
|
Hej. Kommando csplit utformades för detta: Kod:
#!/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
Produktion: Kod:
% ./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
Se Mannen csplit for details ... Skål, varselljus |
|
|||||
|
Hej, vgersh99.
Citat:
Jag provade på en FreeBSD 4,11 system, och det har bara en anemic dela med ett mönster-match inlagd, men csplit (förekommer inte heller på OS X). Den GNUlånga optioner kan oftast ersättas med enkel-dash alternativ. Det skulle ta en annan process för att extrahera strängen att göra filnamn, men det är en bra övning för OP ... Skål, varselljus |
|
||||
|
Hej Vänner,
Tack för din hjälp. Jag är nybörjare i Unix. Jag arbetar i ksh och csh. nu kan youuplease förklara hur man ska utföra den. abc.txt är mitt filnamn. DRL din lösning verkar vara okej. men jag är inte i stånd att utföra den. |
|
|||||
|
Ytterligare ett: Kod:
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
Använd nawk på Solaris. Med några Awk utföranden (som XPG Awk på Solairs), Du borde vara mer explicit: Kod:
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 prefix är mer förnuftigt, naturligtvis. Senast redigerad av radoulov; 11-20-2007 at 06:38.. Anledning: ps |