![]() |
|
|
Google unix.com
|
|||||||
| Foren | Registrieren | Forum-Regeln | Links | Alben | FAQ | Benutzerliste | Kalender | Suche | Die heutige Beiträge | Alle Foren als gelesen markieren |
| Shell Programmierung und Scripting Post Fragen zu ksh, csh, sh, bash, Perl, PHP, sed, awk und anderen Shell-Skripte und Shell-Scripting-Sprachen hier. |
Mehr UNIX-und Linux-Forum Themen Vielleicht finden Sie hilfreiche
|
||||
| Faden | Thread Starter | Forum | Antworten | Last Post |
| Datei-Umwandlung | gehlnar | Shell Programmierung und Scripting | 4 | 04-17-2009 08:47 AM |
| Datei-Umwandlung | sridhar_423 | Shell Programmierung und Scripting | 2 | 03-16-2009 04:47 PM |
| Umwandlung in ASCII-Datei | mora | UNIX für Fortgeschrittene und Experten | 4 | 03-31-2008 01:29 PM |
| Conversion Utility xhtml Datei auf Postscript-Datei | dattatray.b | SUN Solaris | 0 | 08-25-2005 07:36 AM |
| Dateikonvertierung | HIPO | UNIX for Dummies Questions & Answers | 1 | 07-24-2001 10:24 PM |
![]() |
|
|
LinkBack | Thread Tools | Suche diesen Thread | Rate Thread | Anzeige-Modi |
|
|
|
||||
|
Dateikonvertierung und awk
Hallo allerseits,
Ich bin mit dem Ausgang der Eingabedatei, und ich bin mit unter-Befehl im Skript, um das erwartete Ergebnis. Auch möchte ich eine weitere Bedingung mit logischen UND (& &) an Stelle von $ 2 \u003d\u003d "L" ($ 4 \u003d 0 - $ 4) as $ 2 \u003d\u003d "L" & & $ 3 \u003d\u003d "L" ($ 4 \u003d 0 - $ 4) aber ich bin immer einige awk Fehler. Kann jemand bitte wenden Sie sich bitte auf dieser? 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
|
|
||||
|
Zitat:
Prost, Devaraj Takhellambam |
|
||||
|
Hi,
Dies ist das erwartete Ergebnis. Erwartete Leistung \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d PKO SA PLPKO0000016 ~ ~ ~ SHS 20000 PL0000101937 ~ DS1110 ~ ~ FMT 100000 KGHM PLKGHM000017 ~ ~ ~ SHS 10000 Aber wenn Sie sehen, meine ursprüngliche Nachricht Ich bekomme aber zusammen mit einigen anderen Aufzeichnungen. Bitte lassen Sie mich wissen, wenn Sie noch weitere Frage zu diesem Thema. Prost, gehlnar |
|
||||
|
Dank Vgersh, ich habe den richtigen Code nach Ihren beraten.
Ich lasse mich erwartet ausgegeben, wenn ich awk Betrieb zweimal dh, indem die Ausgabe vor Array Betrieb und über die neue Datei, wenn ich Array Betrieb bekomme ich richtig ausgegeben. Aber da war ich mit awk zweimal, ich dachte, der Kombination. Haben wir so etwas wie Rohr in awk? So wird es wie bei der ersten sich diese Datei .. 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,
Schritt 1: Datei-Konvertierung für Berechnungselemente 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
Diese beiden Schritte in einem. Prost, gehlnar |
![]() |
| Lesezeichen |
| Thread Tools | Suche diesen Thread |
| Anzeige-Modi | Rate this thread |
|
|