The UNIX and Linux Forums  

Hallo und herzlich Willkommen aus den Vereinigten Staaten, die UNIX-und Linux-Foren! Vielen Dank für Ihren Besuch und die Teilnahme an unserem Global Community.

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.

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 11-17-2008
timj123 timj123 is offline
Registrierte Nutzer
  
 

Join Date: Jan 2008
Beiträge: 80
Hilfe mit awk Funktionen

Ich habe ein Problem mit meinem Script. Es funktioniert in den meisten Fällen ist jedoch nicht sehr
portabel. Beispiel unten sind Beispiele von "Datei" und Ausschneiden und Einfügen von Skripts.

Das Skript funktioniert, wenn die folgenden System ausgegebenen Portionen sind wie folgt:

SYSTEM CFO ist, gefolgt von SYSTEM DAX
SYSTEM DAX, gefolgt von SYSTEM TC
SYSTEM TC, gefolgt von STETEM OND

Auf verschiedenen Einheiten einige Teile des Systems sind nicht in der gleichen Ausgabe
oder einige Teile des Systems sind nicht ausgegeben werden.

Meine Frage ist, wie kann ich ändern awk-Funktionen auf die Verarbeitung auf einem System
und Verarbeitung auf den nächsten Teil-System, wenn die nächste Teil-System
ist nicht in den Teil selbst, zum Beispiel der Funktion (DAX):
Code:
   while (( getline > 0 ) && ( $3 != "TC" )) {
In dem obigen Code-Zeile, $ 3 TC System ist der nächste Teil, erzählt, dass Funktion, um die Verarbeitung.

Hier sind Beispiele von Eingabe-Datei:

Code:
doal   cont   pegc   system1   call7   solh
RX SYSTEM CFO
DATE 322:47:34

DPORQ = 0        TTORQ = 0        DPINRQ= 0
MFINRQ= 0        CDIRR = 0        TCBSY = 0
TCINT = 0        TCANS = 0        TCRNG = 0
RPINRQ= 0        C6INRQ= 0        ISUPRQ= 11147
TUPRQ = 0        MFOURQ= 0        C6OURQ= 0
ISUPOR= 17417    BICCRQ= 0        BICCOR= 0
POVFL = 0

doal   cont   pegc   system1   call7   solh
RX SYSTEM DAX
DATE 322:47:34

proc   cpu    systm    load     sactv    orig    ovldpu   mmst
1      0        0        0        0        0        0        0
2      0        0        0        0        0        0        0
3      0        0        0        0        0        0        0
4      0        0        0        0        0        0        0
5      0        0        0        0        0        0        0
6      0        0        0        0        0        0        0
7      0        0        0        0        0        0        0
8      0        0        0        0        0        0        0
9      0        0        0        0        0        0        0
10     0        0        0        0        0        0        0
11     0        0        0        0        0        0        0

doal   cont   pegc   system1   call7   solh
RX SYSTEM TC
DATE 322:47:34

proc     pucco    load     chgro    chmert   chinc    chout    ceqpu
22       2        97       0        0        2707     6374     0
1        3        15011    0        0        2717     6651     0
2        3        12976    0        0        2139     6137     0
3        3        13898    0        0        2199     6583     0
4        3        15123    0        0        2478     7788     0
5        3        13823    0        0        2645     5789     0
Hier sind Beispiele von Skript:
Code:
/usr/xpg4/bin/awk '

$3 == "CFO"    { cFO() } 
$3 == "DAX"    { dAX() } 
$3 == "TC"     { tC()  } 


function dAX(     _xm)
{
   while (( getline > 0 ) && ( $3 != "TC" )) {

do a a lot of awk stuff here....
.
.
.
.
.
   }
}

function tC(     _msx)
{
   while (( getline > 0 ) && ( $3 != "OND" )) {

do a a lot of awk stuff here....
.
.
.
.
.
   }
}

function cFO(     _iu)
{
   while (( getline > 0 ) && ( $3 != "DAX" )) {

do a a lot of awk stuff here....
.
.
.
.
.
   }
} FILENAME
Vielen Dank im Voraus.
  #2 (permalink)  
Old 11-18-2008
timj123 timj123 is offline
Registrierte Nutzer
  
 

Join Date: Jan 2008
Beiträge: 80
Gibt es eine Möglichkeit, vielleicht lesen Sie im gesamten Datei zunächst zu ermitteln nächsten Abschnitt System? Ich war zu wollen vermeiden, tun dies, weil die Dateien sind sehr groß.
  #3 (permalink)  
Old 11-19-2008
Annihilannic Annihilannic is offline Forum Advisor  
  
 

Registriert seit: Mai 2008
Ort: Sydney, Australien
Beiträge: 1.009
Warum haben Sie nicht nur den Zustand, wo sie aufhört, dh wenn Sie auf den "doal"-Linie?

Code:
    while (getline && $1 != "doal") {
Wenn Sie tun müssen, die Verarbeitung des "doal" Linie Inhalte können Sie nur tun, sie nach der while-Schleife.
  #4 (permalink)  
Old 11-19-2008
timj123 timj123 is offline
Registrierte Nutzer
  
 

Join Date: Jan 2008
Beiträge: 80
Annihilannic,
Erster Dank für die Betreuung in dieser für mich.

Aber leider die ich gebucht wurde nur ein Ausschnitt von dem, was ich habe. Manchmal werden die Daten wie folgt:

Code:
doal   cont   pegc   system1   call7   solh
RX SYSTEM CFO
DATE 322:47:34

DPORQ = 0        TTORQ = 0        DPINRQ= 0
MFINRQ= 0        CDIRR = 0        TCBSY = 0
TCINT = 0        TCANS = 0        TCRNG = 0
RPINRQ= 0        C6INRQ= 0        ISUPRQ= 11147
TUPRQ = 0        MFOURQ= 0        C6OURQ= 0
ISUPOR= 17417    BICCRQ= 0        BICCOR= 0
POVFL = 0

doal   cont   pegc   system1   call7   solh
RX SYSTEM CFO
DATE 322:47:34

DPORQ = 0        TTORQ = 0        DPINRQ= 0
MFINRQ= 0        CDIRR = 0        TCBSY = 0
TCINT = 0        TCANS = 0        TCRNG = 0
RPINRQ= 0        C6INRQ= 0        ISUPRQ= 11158
TUPRQ = 0        MFOURQ= 0        C6OURQ= 0
ISUPOR= 17459    BICCRQ= 0        BICCOR= 0
POVFL = 0

doal   cont   pegc   system1   call7   solh
RX SYSTEM DAX
DATE 322:47:34

proc   cpu    systm    load     sactv    orig    ovldpu   mmst
1      0        0        0        0        0        0        0
2      0        0        0        0        0        0        0
3      0        0        0        0        0        0        0
4      0        0        0        0        0        0        0
5      0        0        0        0        0        0        0
6      0        0        0        0        0        0        0
7      0        0        0        0        0        0        0
8      0        0        0        0        0        0        0
9      0        0        0        0        0        0        0
10     0        0        0        0        0        0        0
11     0        0        0        0        0        0        0
Und ich brauche, um beide Teile als eine. Aber Sie haben mir eine Idee, wie sonst, wenn möglich zu lösen. Gibt es eine Möglichkeit, um die Zeile unter, ohne eine Verarbeitung auf dieser Linie? Ich werde versuchen zu erklären, für die dieser ungetesteten Code:

Code:
while (( getline > 0 ) && ( $1 != "doal" ) && ( getline ; $3=! "CFO"))
Was ich versuche zu sagen ist, ist es möglich, zu testen, unter der $ 3 "doal"-Linie?
  #5 (permalink)  
Old 11-19-2008
Annihilannic Annihilannic is offline Forum Advisor  
  
 

Registriert seit: Mai 2008
Ort: Sydney, Australien
Beiträge: 1.009
Es ist schwierig, Sie zu beraten, ohne zu wissen, was der Code tut innerhalb dieser while-Schleifen, aber in Ihrem Standpunkt, den ich versuchen würde, und vermeiden Sie sie vollständig, und etwas mehr wie folgt aus:

Code:
awk '
        /^RX SYSTEM/ { section=$3 }
        section=="CFO" {
                print "processing CFO stuff: " $0
        }
        section=="DAX" {
                print "processing DAX stuff: " $0
        }
        section=="TC" {
                print "processing TC stuff: " $0
        }
' inputfile > outputfile
Es ist möglich, "nach vorne" in folgenden Zeilen, indem Sie jede Zeile, wie Sie ihn in eine Variable, und die Verarbeitung der Daten in der Variablen, wenn Sie die nachfolgende Zeile, mit der leichten Komplikation, die Sie benötigen, um die letzte Zeile von Daten in den END () Klausel Ihr Skript.
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 04:10 PM.


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