Hilfeeeee! split & grep in awk umschreiben ohne splite
-
- Beiträge: 7
- Registriert: 15.06.2015 18:31:59
Hilfeeeee! split & grep in awk umschreiben ohne splite
Liebe Forummitglieder, ich muss folgendes in awk umschreiben, komme aber nicht drauf.
Ich muss noch mehr umschreiben, über ein paar tipps freue ich mich schon im Voraus
$fileDetails=`cat ${currentFile}/status | grep "^Uid:"`;
$Uid=(split(/\t/, $fileDetails))[1];
ich lese unter /proc/123* file status und hole die info über Uid dann splite ich die Ausgabe. Geht das mit awk, wenn ja, dann wie...
*z.B.
MfG R.
Ich muss noch mehr umschreiben, über ein paar tipps freue ich mich schon im Voraus
$fileDetails=`cat ${currentFile}/status | grep "^Uid:"`;
$Uid=(split(/\t/, $fileDetails))[1];
ich lese unter /proc/123* file status und hole die info über Uid dann splite ich die Ausgabe. Geht das mit awk, wenn ja, dann wie...
*z.B.
MfG R.
Re: Hilfeeeee! split & grep in awk umschreiben ohne splite
So?
Nicht ganz perfekt, aber für nen Einstieg sollte es reichen (falls "Uid:" irgendwo anders auch vorkommt wird da auch was ausgegeben). Das -F ' ' ist der Feldtrenner, hier z.B. nen Space, danach folgen das Pattern /Uid:/ und die entsprechende Anweisung {} was gemacht werden soll, $0 ist die ganze Zeile, $1 usw die Felder.
Code: Alles auswählen
awk -F' ' '/Uid:/{print "hier gibts\n"$0 "\n mit " NF " Feldern: z.B." $1 " und " $2 " usw." }' /proc/12313/status
Re: Hilfeeeee! split & grep in awk umschreiben ohne splite
welches Feld magst du denn haben? Hier kommt das zwote:
Code: Alles auswählen
awk '/^Uid/{print $2}' $currentFile/status
-
- Beiträge: 7
- Registriert: 15.06.2015 18:31:59
Re: Hilfeeeee! split & grep in awk umschreiben ohne splite
Vielen Dank, werde gleich testen, es ist nicht so schwer, wie ich es mir vorgestellt habe
-
- Beiträge: 7
- Registriert: 15.06.2015 18:31:59
Re: Hilfeeeee! split & grep in awk umschreiben ohne splite
wie kann ich z.B. das 17-te, 18-te Element nach \t ausgeben $17 ? Ich habe irgendwo gelesen, dass es nur bis $9 funktionieren kann.
Vielen Dank!
Vielen Dank!
Re: Hilfeeeee! split & grep in awk umschreiben ohne splite
In der Shell ist das so, in awk geht es aber.Rebekkakka hat geschrieben:wie kann ich z.B. das 17-te, 18-te Element nach \t ausgeben $17 ? Ich habe irgendwo gelesen, dass es nur bis $9 funktionieren kann.
Use ed once in a while!
-
- Beiträge: 7
- Registriert: 15.06.2015 18:31:59
Re: Hilfeeeee! split & grep in awk umschreiben ohne splite
ich bekomme irgendwieüber perl Uid: 107, ich brauche aber nur den Wert, wenn ich den Befehl eingebe, kommt nur den Wert raus.
was mache ich falsch, braucht ihr quellcode?
was mache ich falsch, braucht ihr quellcode?
Re: Hilfeeeee! split & grep in awk umschreiben ohne splite
Beschreib doch einfach mal was Du genau als Aufgabestellung hast. Ich nehme an, Du willst rausfinden unter welchem User ein bestimmtes Programm gestartet wurde oder mit welchen Rechten es grade läuft?
Re: Hilfeeeee! split & grep in awk umschreiben ohne splite
Meinst du sowas:
?
Code: Alles auswählen
awk '/^Uid:/{print $2}' "$currentFile/status"
Use ed once in a while!
-
- Beiträge: 7
- Registriert: 15.06.2015 18:31:59
Re: Hilfeeeee! split & grep in awk umschreiben ohne splite
ich muss mit perl den Befehl "ps axl" nachbilden, ich habe alles, bis auf Flags schon rausgefunden,
allerdings bekomme ich mit
...
# UID
$Uid=`awk '/^Uid/{print $2}' $currentFile/status`;
# PID
$Pid=`awk '/^Pid/{print $2}' $currentFile/status`;
# PPID
$PPid=`awk '/^PPid/{print $2}' $currentFile/status`;
...
diese Ausgabe, ich brauche aber nur die Werte und keine Labels, d.h. nur 1000 und nicht Uid: 1000 (auf dem Bild muss nur 0 stehen und nicht Uid: 0)
allerdings bekomme ich mit
...
# UID
$Uid=`awk '/^Uid/{print $2}' $currentFile/status`;
# PID
$Pid=`awk '/^Pid/{print $2}' $currentFile/status`;
# PPID
$PPid=`awk '/^PPid/{print $2}' $currentFile/status`;
...
diese Ausgabe, ich brauche aber nur die Werte und keine Labels, d.h. nur 1000 und nicht Uid: 1000 (auf dem Bild muss nur 0 stehen und nicht Uid: 0)
Re: Hilfeeeee! split & grep in awk umschreiben ohne splite
Ist das Shell? Oder Perl? Falls Perl, warum machst du einen Haufen system()-Calls, anstatt einfach mit Hausmitteln zu arbeiten?
Ansonsten,tut hier ohne jegliche Unsauberkeiten wie Pid:-Praefixe o.oae.. Moeglicherweise geht da der Feldtrenner (-F) kaputt zwischendrin.
Edit: Ah, ich sehe das Problem:Das $2 expandiert im Perl-Parser. Da muessen ein bis drei Backslashes davor.
Gruss Cae
Ansonsten,
Code: Alles auswählen
$ awk '/^Pid:/{print$2}' /proc/$$/status
30252
$
Edit: Ah, ich sehe das Problem:
Code: Alles auswählen
$ echo 'print(`awk "/^Pid:/{print$2}" /proc/808/status`)' | strace -fe execve perl | cat -A
...
[pid 2295] execve("/usr/bin/awk", ["awk", "/^Pid:/{print}", "/proc/808/status"], [/* 34 vars */]) = 0
...
Pid:^I808$
$
Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.
—Bruce Schneier
-
- Beiträge: 7
- Registriert: 15.06.2015 18:31:59
Re: Hilfeeeee! split & grep in awk umschreiben ohne splite
Das ist perl, mit shell bekomme ich eine saubere Ausgabe, mit perl aber nicht.
Re: Hilfeeeee! split & grep in awk umschreiben ohne splite
Beachte meinen Edit, der sich vermutlich mit deinem Post zeitlich ueberlappt hat. Das Problem ist das mangelnde Escaping der Kommandozeile in den Backticks.
Gruss Cae
Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.
—Bruce Schneier
-
- Beiträge: 7
- Registriert: 15.06.2015 18:31:59
Re: Hilfeeeee! split & grep in awk umschreiben ohne splite
Cae, Vielen Dank, mit einem "\" vor $2 könnte ich das Problem lösen.
Wie sollte ich mir das Wort "Expandieren" in diesem Kontext vorstellen ? - sorry verstehe nicht ganz.
Wie sollte ich mir das Wort "Expandieren" in diesem Kontext vorstellen ? - sorry verstehe nicht ganz.
Re: Hilfeeeee! split & grep in awk umschreiben ohne splite
Expandieren meint eigentlich dieses Verhalten:Rebekkakka hat geschrieben:Wie sollte ich mir das Wort "Expandieren" in diesem Kontext vorstellen ? - sorry verstehe nicht ganz.
Code: Alles auswählen
$ touch a
$ touch b
$ touch c
$ echo *
a b c
$
$2 ist auch ein Platzhalter, der vor dem awk-Aufruf durch den Inhalt der Perl-Variablen $2 (die leer ist) ersetzt wird.
Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.
—Bruce Schneier