The UNIX and Linux Forums  

Go Back   Die UNIX-und Linux-Foren > Top Foren > Shell Programmierung und Scripting
.
Google unix.com



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

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 Suche diesen Thread Rate Thread Anzeige-Modi
  #1 (permalink)  
Old 04-23-2009
gehlnar gehlnar is offline
Registrierte Nutzer
  
 

Join Date: Jan 2009
Beiträge: 47
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
  #2 (permalink)  
Old 04-23-2009
devtakh devtakh is offline
Registrierte Nutzer
  
 

Join Date: Oct 2007
Ort: Bangalore
Beiträge: 514
Zitat:
Zitat von gehlnar View Post
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
können Sie ein Muster des zu erwartenden Ausgang hier? Von Ihrem Post, es ist nicht klar, was Sie erreichen wollen.


Prost,
Devaraj Takhellambam
  #3 (permalink)  
Old 04-23-2009
gehlnar gehlnar is offline
Registrierte Nutzer
  
 

Join Date: Jan 2009
Beiträge: 47
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


  #4 (permalink)  
Old 04-23-2009
vgersh99's Avatar
vgersh99 vgersh99 is online now Forum Staff  
Moderator
  
 

Join Date: Feb 2005
Ort: Boston, MA
Posts: 5122
Sie wirklich brauchen keine "Katze", "grep" usw. ... - Awk kann es sich.

nawk-f geh.awk myFile

geh.awk:
Code:
BEGIN {
  FS="|"
  OFS="~"
}
!/^PL/ { next }
$2=="L" && $3=="L" {$4=0-$4}
{
  $6=($6=="COM")?"SHS":"FMT"
  arr[$1 OFS $5 OFS $6]+=$4
}
END {
  for (i in arr)
    print i,arr[i]
}
Aber ich bin nicht, wie man sie erwartet Ausgang, obwohl ich haben versucht, folgen Sie den Code.
  #5 (permalink)  
Old 04-23-2009
gehlnar gehlnar is offline
Registrierte Nutzer
  
 

Join Date: Jan 2009
Beiträge: 47
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
und führen Sie dann Array Betrieb der Berechnung zu diesem Thema, aber meine Frage ist, kann das nicht zu tun mit einer awk Betrieb.
  #6 (permalink)  
Old 04-23-2009
vgersh99's Avatar
vgersh99 vgersh99 is online now Forum Staff  
Moderator
  
 

Join Date: Feb 2005
Ort: Boston, MA
Posts: 5122
Ich bin nicht ganz folgen, was Sie tun - sorry.
Könnten Sie die Schritte und der Code geändert, bitte?
  #7 (permalink)  
Old 04-23-2009
gehlnar gehlnar is offline
Registrierte Nutzer
  
 

Join Date: Jan 2009
Beiträge: 47
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
Schritt 2: Ist die Berechnung zu erwartenden Ergebnisse mit der oben genannten Ausgabe von temporären
Code:
 awk -F'~' '{OFS="~"}{arr[$1OFS$5OFS$6]+=$4} END 
  {for (i in arr) {print i,arr[i]}}'<TEMPFILE>EXPECTEDFILE
Ich bin mit oben genannten zwei Schritten in einem Skript, hoffe, Sie haben eine Vorstellung von ihr, und meine Idee war es,
Diese beiden Schritte in einem.

Prost,
gehlnar
Closed Thread

Lesezeichen

Thread Tools Suche diesen Thread
Suche diesen Thread:

Erweiterte Suche
Anzeige-Modi Rate this thread
Rate this thread:

Forumregeln
Du möglicherweise nicht neue Themen
Du möglicherweise nicht nach Antworten
Du möglicherweise nicht post-Anlagen
Du möglicherweise nicht bearbeiten Sie Ihre Beiträge

BB-Code ist Auf
Smilies sind Auf
[IMG] Code Auf
HTML-Code ist Aus
Trackbacks sind Auf
Pingbacks sind Auf
Refbacks sind Auf




Alle Zeiten sind GMT -4. Es ist jetzt 05:57 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Ltd. Sprachliche Übersetzungen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Die UNIX-und Linux-Foren Content © Copyright 1993-2009. Alle Rechte Reserved.Ad Management von RedTyger

Content Relevant URLs durch vBSEO 3.2.0