![]() |
|
|
google unix.com
|
|||||||
| Forums | Registrer | Forum Rules | Lenker | Album | FAQ | Medlemsliste | Kalender | Søke | Dagens innlegg | Marker forumene som lest |
| 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 |
| File konvertering | gehlnar | Shell programmering og Skripting | 4 | 04-17-2009 08:47 |
| Filkonvertering | sridhar_423 | Shell programmering og Skripting | 2 | 03-16-2009 04:47 |
| Filkonvertering til ascii | Mora | UNIX for Advanced & ekspertbrukere | 4 | 03-31-2008 01:29 |
| Konvertering verktøyet xhtml filen til Postscript fil | dattatray.b | Sun Solaris | 0 | 08-25-2005 07:36 |
| filkonvertering | hipo | UNIX for Dummies Spørsmål og svar | 1 | 07-24-2001 10:24 |
![]() |
|
|
LinkBack | Thread Tools | Søk i denne tråden | Rate Thread | Visningsmoduser |
|
|
|
||||
|
Fil konvertering og awk
Hei Alle,
Jeg er forvirret med utgang til inndatafilen og jeg bruker under kommando i skript for å få den forventede output. Også jeg vil legge til en annen tilstand ved hjelp av logisk AND (& &) i stedet for $ 2 \u003d\u003d "L" ($ 4 \u003d 0 - $ 4) som $ 2 \u003d\u003d "L" & & $ 3 \u003d\u003d "L" ($ 4 \u003d 0 - $ 4) men jeg får noen awk feil. Kan noen vennligst gi råd om dette kan du? Code:
cat $FILENAME |grep "^PL"|tr -d '\015'|sort -k1,2|nawk -F'|' 'BEGIN {OFS="~"}$2=="L"{$4=0-$4};$6=="COM"?$6="SHS":$6="FMT";{arr[$1"~"$5"~"$6]+=$4} END {for (i in arr) {print i,arr[i]}}'>$TEMPFILE
Input File
============
ISIN|BL|STATUS|QTY|SNAME|CLASS
PLKGHM000017|B|L|85000|KGHM|COM
PLPKO0000016|B|L|310000|PKO S.A.|COM
|B|L|0||
PLKGHM000017|L|L|35000|KGHM|COM
PL0000101937|B|L|100000|DS1110|GOV
|L|L|0||
PLKGHM000017|L|L|40000|KGHM|COM
PLPKO0000016|L|L|290000|PKO S.A.|COM
Present Output
==============
PL0000101937~B~L~100000~DS1110~FMT
PLKGHM000017~B~L~85000~KGHM~SHS
PLKGHM000017~L~L~-35000~KGHM~SHS
PLKGHM000017~L~L~-40000~KGHM~SHS
PLPKO0000016~B~L~310000~PKO S.A.~SHS
PLPKO0000016~L~L~-290000~PKO S.A.~SHS
PLPKO0000016~PKO S.A.~SHS~20000
PL0000101937~DS1110~FMT~100000
PLKGHM000017~KGHM~SHS~10000
Expected Output
==============
PLPKO0000016~PKO S.A.~SHS~20000
PL0000101937~DS1110~FMT~100000
PLKGHM000017~KGHM~SHS~10000
|
|
||||
|
Sitat:
skål, Devaraj Takhellambam |
|
||||
|
Hei,
Dette er forventet produksjon. Forventet utdata \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d PLPKO0000016 ~ PKO SA ~ SHS ~ 20000 PL0000101937 ~ DS1110 ~ FMT ~ 100000 PLKGHM000017 ~ KGHM ~ SHS ~ 10000 Men hvis du ser mitt opprinnelige innlegg får jeg dette, men sammen med noen andre poster. Gi meg beskjed hvis du har ytterligere spørsmål om dette. Skål, gehlnar |
|
||||
|
Takk Vgersh, har jeg riktige koden som pr ditt råd.
Jeg får forventet utgang hvis jeg bruker awk operasjon to ganger dvs. ved å lagre resultatet før array drift og på ny fil hvis jeg bruker array drift Jeg får riktig utgang. Men som jeg brukte awk to ganger, tenkte jeg å kombinere det. Gjør vi noe som pipe i awk? Så det vil bli som først få denne filen .. Code:
PL0000101937~B~L~100000~DS1110~FMT PLKGHM000017~B~L~85000~KGHM~SHS PLKGHM000017~L~L~-35000~KGHM~SHS PLKGHM000017~L~L~-40000~KGHM~SHS PLPKO0000016~B~L~310000~PKO S.A.~SHS PLPKO0000016~L~L~-290000~PKO S.A.~SHS |
|
||||
|
vgersh,
Trinn 1: Innledende filkonvertering enkel beregning Code:
cat INPUTFILE |tr -d '\015'|sort -k1,2|nawk -F'|'
'BEGIN {OFS="~"}!/^PL/{next}$2=="L" && $3=="L"
{$4=0-$4};$6=="COM"?$6="SHS":$6="FMT"{print $0}'>TEMPFILE
Code:
awk -F'~' '{OFS="~"}{arr[$1OFS$5OFS$6]+=$4} END
{for (i in arr) {print i,arr[i]}}'<TEMPFILE>EXPECTEDFILE
disse to trinnene til én. Skål, gehlnar |
![]() |
| Hugseliste |
| Thread Tools | Søk i denne tråden |
| Visningsmoduser | Ranger denne tråden |
|
|