AWK-ból shell script elindítás

Fórumok

Sziasztok!

Egy olyan kérdésem lenne, hogy, ha van egy awk fájlom, pl.

"
#! /bin/awk -f

/valami/
"

és a valami megtalálása esetén lefuttatnék egy xyz.sh fájlt akkor azt hogyan lehet megtenni?

Gondolom nem így:

"
#! /bin/awk -f

/valami/ ./xyz.sh
"

Köszönöm a segítségeteket!

Hozzászólások

system(cmd-line) Execute the command cmd-line, and return the exit status. (This may not be available on non-POSIX systems.)

gawk:


parancs = "uname -a"; parancs | getline eredmeny; printf("%s\n",eredmeny)

udv Zoli

Felmerül a szokásos kérdés: Mit szeretnél valójában csinálni, mi a feladat?

Kedves zeller!

Azt szeretném csinálni, hogy egy folyamatosan frissülő fájlra lefuttatok egy awk-mintát pl. /minta/ és ha ezt megtalálja valahol, akkor indítsa el az xyz.sh shell szkriptet, ami például más paraméterekkel újraindítja a szimulációt, amiből újra jön egy kimenet...

és telepítési jogom sajnos nincs

ez unix, vagy miaszösz?
unix rendszeren mindig van lehetőséged program felrakására. lehet, hogy forrásban kell vinned, és helyben fordítanod, de akkor is tudod a programodat futtatni.

az én véleményem, hogy a feladatot, amit szeretnél megcsinálni, sokkal könnyebb és gyorsabb perl-ben megírni, mint awk-ban. pontosabban fogalmazva: nagyon kevés feladat van, amit awk-ban egyszerűbb és gyorsabb megcsinálni, és ez jó eséllyel nem tartozik közéjük.

Erre korabban mar nyitottal egy masik kerdest. A foyamatosan valtozo fajl-t awk-kal direktben nem sok eselyed van kezelni, ugyanis ha eccer elert a vegeig, szepen ki fog lepni. Korabban mar javasoltak tobben, hogy a *szintisztan* awk megoldast felejtsd el, helyette epitkezz a meglevo eszkozokre:


tail -f fajl |
awk '
BEGIN { futtatando = "scripted_path_szal_megadva" ; }
/valami/ {
 statusz = system( futtatando  );
 itt_csinalsz_a_statusz_szal_amit_akarsz
 }
'

Ennek az az elonye, hogy a tail -f soha nem lep ki, tehat az awk tenyleg a vegtelensegig fut.

Szia Zahy!

Köszönöm a segítségedet.

Ha megoldható, két sorod részletezését kérném:

statusz = system( futtatando );
itt_csinalsz_a_statusz_szal_amit_akarsz

Addig értem, hogy ha a valami mintát megtaláltam, akkor futtatando név alatt rögzítve van a szkript elérési helye.

De magát a statusz = ..... sort
és az
itt_csinalsz_a_statusz_szal_amit_akarsz
sort nem értem.

A system parancs a futtatáshoz kell?

Elnézést az alap kérdésekért.