![]() |
|
|
google unix.com
|
|||||||
| Fórumok | Regisztráció | Fórum Szabályok | Linkek | Albumok | GYIK | Tagok listája | Naptár | Keres | Mai hozzászólások | Megjelöl Fórumok Olvas |
| Shell programozás és Scripting Post kérdések KSH, CSH, SH, Bash, Perl, PHP, SED, AWK ÉS EGYÉB shell szkriptek és shell script nyelvek itt. |
![]() |
|
|
LinkBack | Téma eszközök | Keresés a téma | Rate Thread | Megjelenítési módok |
|
|
|
||||
|
Segítség a awk funcions
Nekem van egy kérdés, én forgatókönyvet. Mûködik a legtöbb, de nem nagyon hordozható. Példa alábbi minta "input file" és vágott be a "forgatókönyvet. A script működik jól, ha a következő rendszer részeket outputted a következők: SYSTEM CFO követi SYSTEM DAX SYSTEM DAX követi RENDSZER TC RENDSZER TC követi STETEM Ond A különböző egységek egy részét a rendszer részeinek és nem ugyanabban a outputted érdekében, illetve néhány, a rendszer részeket nem outputted egyáltalán. A kérdésem az, hogy hogyan tudom módosítani awk funkciók stop feldolgozását az egyik rendszer és meg kell kezdeni a következő feldolgozási rendszer része, amikor a következő rendszer része nincs benne az a része is, például a funkciót (DAX): Kód:
while (( getline > 0 ) && ( $3 != "TC" )) {
A fenti sor a kódot, 3 $ TC a következő rendszer része, amely azt mondja, hogy hagyja abba a funkció feldolgozás. Itt van minta input file: Kód:
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 Itt van minta script: Kód:
/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
Köszönöm előre. |
|
||||
|
Miért nem változik a feltétellel, ha az leáll, azaz, ha megüt a "doal" sort? Kód:
while (getline && $1 != "doal") {
Ha szükség van, hogy a feldolgozás a "doal" sor tartalmát ha csak ezt követően, míg a hurok. |
|
||||
|
Annihilannic, Először is Köszönöm, hogy néztem meg ezt nekem. De sajnos az adatok I posted csak egy részlet, amit én. Előfordul, hogy az adatok a következők: Kód:
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 És azt kell mindkét folyamat egyik szakasza. De te adj egy ötletet arra vonatkozóan, hogyan lehet megoldani máshol, ha lehet. Van úgy, hogy teszteljék a vonal alatt, anélkül teszi, hogy a feldolgozás sor??? Megpróbálom elmagyarázni e teszteletlen kód: Kód:
while (( getline > 0 ) && ( $1 != "doal" ) && ( getline ; $3=! "CFO")) Amit próbál mondani, van-e lehetőség a vizsgálat 3 $ alatt "doal" sort? |
|
||||
|
Nehéz, hogy Önt, anélkül, hogy tudnánk, mit is csinál a kód, amíg ezek a belső hurkok, de az Ön álláspontját, és azt próbálja meg elkerülni azokat használó teljesen, de valami ilyesmi: Kód:
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
Lehetőség van arra, hogy "nézd csak" a következő sorokat a tároló minden sor, amit olvastam, hogy egy változó, és a tárolt adatok feldolgozására a változó, ha elolvassa a következő sort, az enyhe komplikáció, hogy meg kell kezelni az utolsó sor Az adatok a végén () záradékát szkriptjeid. |
![]() |
| Könyvjelzõk |
| Téma eszközök | Keresés a téma |
| Megjelenítési módok | Rate this thread |
|
|