Zwei Spalten

Deneu

Deneu

Grünschnabel
Hallo,

ich bin ein Shell Skript am erstellen welches mir via grep und awk Daten aus einer Log Datei ausließt.
Im ersten Fall ließt es Usernamen aus $USER im zweiten Part liest es dann Quotas von den jeweiligen Usern aus (stehen 3 zeilen unter dem Usernamen in der log Datei).
Nun möchte ich das er mir diese Werte ausliest (was er schon macht und dann in ein Tempfile nebeneinander schreibt.

Also anstatt
Paul
Uwe
Klaus
Marion
568
200
789
123

Möchte ich:
Paul 568
Uwe 200
Klaus 789
Marion 123

Wie kann ich das am besten realisieren.
Code:
USER=`cat $logfile | grep "Checking user =" | awk '{print $4}' | tr -d ''`;
QUOTA=`cat $logfile | grep "kbytes in use by" | awk '{print $1}' | tr -d ''`;

Vielen Dank!

Gruß
Philipp
 
Code:
while read line
do
USER=$(awk '{print $4}' $line)
QUOTA=$(awk '{print $2}' $line)
echo " ${USER}      ${QUOTA}" >> $output.out
done < $logfile

ungetesteter Schnellschuss
 
Zuletzt bearbeitet:
Evtl. mal so probieren:
Code:
awk '
        /Checking user =/       { print $4 }
        /kbytes in use by/      { print $1 }
' | paste - -
Wenn in deinem Logfile die Zeilen mit den Usernamen und den Quotas immer schön abwechselnd kommen, sollte awk das ganze eigentlich in einem Durchlauf rausziehen können ...

Gruss, A.

2 Minuten Überlegen ... so gehts vielleicht auch:
Code:
awk '
        /Checking user =/       { user = $4 }
        /kbytes in use by/      { print user, $1 }
'
... damit werden dann aber auch wirklich nur die Usernamen ausgegeben, für die Quota im Log aufgeführt werden ...
 
Zuletzt bearbeitet:
also ich würde das auch so wie Nox machen, denke das ist wohl das einfachste

greetz
 
Code:
while read line
do
USER=$(awk '{print $4}' $line)
QUOTA=$(awk '{print $2}' $line)
echo " ${USER}      ${QUOTA}" >> $output.out
done < $logfile

ungetesteter Schnellschuss

Vielen Dank.
Ich habe es jetzt über Arrays gemacht.
 

Ähnliche Themen

Textkonsole mit KMS zu klein

Zurück
Oben