Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
Shellprogrammierung

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Sonstiges
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Peter
Gast





BeitragVerfasst am: 16. Dez 2001 1:54   Titel: Shellprogrammierung

Hallo,

Ich habe mir ein kleines Shellscript geschrieben, welches mir die User in der passwd sortiert auflisten sollte.
Nur habe ich keine Idee, wie ich die Ausgabe formatieren kann.
Hier mein Script:

#!/bin/bash
#
touch /tmp/tempfile
#
sort /etc/passwd > /tmp/tempfile
#
lines=`wc -l /tmp/tempfile | awk '{print $1}'`
#
temp="1"
#
while [ "$temp" -le "$lines" ] ; do
#
line=`head -n $temp /tmp/tempfile | tail -n 1`
#
feld1=`echo $line | awk -F : '{print $1}'`
feld2=`echo $line | awk -F : '{print $3}'`
feld3=`echo $line | awk -F : '{print $4}'`
feld4=`echo $line | awk -F : '{print $5}'`
feld5=`echo $line | awk -F : '{print $6}'`
feld6=`echo $line | awk -F : '{print $7}'`
#
echo "$feld1 $feld2 $feld3 $feld4 $feld5 $feld6"
#
temp=`expr $temp + 1`
#
done
#
rm -f /tmp/tempfile

Ist zwar nicht sehr elegant, funktioniert aber grundsätzlich.
Hat jemand eine Idee, wie ich die Ausgabe formatieren Kann ?

Gruß, Peter

PS: Bin auch für Verbesserungsvorschläge aller Art offen...
 

demian
Gast





BeitragVerfasst am: 16. Dez 2001 23:46   Titel: Re: Shellprogrammierung

awk hat eine printf Funktion. Die Syntax zum Formatieren er Ausgabe ist C-aehnlich:
printf("%10s", t)
gibt also die Zeichenkette in der Variablen t auf mindestens 10 Zeichen Breite aus.

neben s fuer Strings gibt's noch
d integer
o octal
x hex
f float
g double
 

Peter
Gast





BeitragVerfasst am: 17. Dez 2001 1:38   Titel: Re: Shellprogrammierung

@demian

Jep, mit awk funktionierts..

Vielen Dank auch,
Gruß, Peter
 

trinity



Anmeldungsdatum: 12.10.2001
Beiträge: 821

BeitragVerfasst am: 17. Dez 2001 9:15   Titel: Re: Shellprogrammierung

Verbesserungsvorschläge:
wc -l errechnet dir Länge, awk befehl deswegen nicht notwendig.

aber eigentlich müsste es doch auch so gehe:

sort /etc/passwd|awk -F:'{print $1,$3,$4,$5,$6,$7}'

Das ist die einzige Zeile. sonst steht nichts in dem Script. Wenn ich jetzt keinen Tippfehler habe (oder sonstwas vergessen habe, sollte es funktionieren. Konnte es leider nicht testen.
_________________
"Korrekt, Freundlich, Kostenfrei", wähle genau zwei. (Lutz Donnerhacke in dcsf)
 
Benutzer-Profile anzeigen Private Nachricht senden

alias_maya
Gast





BeitragVerfasst am: 17. Dez 2001 17:26   Titel: Re: Shellprogrammierung

geht auch mit fester Feldbreite;

sort /etc/passwd | awk -F : '{ printf("%-15s%-6s%-6s%-20s%-20s%-20s\n",$1,$3,$4,$5,$6,$7) }'

grundsätzlich sollte es auch mit variabler Feldbreite möglich sein, indem man die Zeichen im
jeweils längsten Feld abzählt und einer Variablen übergibt, welche man anschließend im Formatierer auswertet,
allerdings kämpfe ich noch mit der Syntax von awk.

Gruß,
 

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Sonstiges Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy