Hallo Elmar, Elmar W. Tischhauser, 22.09.2004 (d.m.y): > On 22 Sep 2004 at 14:01 +0200, Christian Schmidt wrote: > > > Beissen sich die Variablendeklarationen mit den "intern" von awk > > verwendeten? > > Ja. Wenn man Shellvariablen an AWK übergeben will, muss man entweder mit > Quotingakrobatik arbeiten oder (komfortabler) awk die Variablen per > '-v'-Parameter übergeben, der für diesen Zweck vorgesehen ist. Ahja. > Für deine konkrete Problemstellung würde ich etwas à la > #!/bin/sh > ALIASFILE="aliases.ls" > awk -F": " -v USERNAME="${1}" \ > '$2 ~ USERNAME { print $2 ", \"| vacation -A " $1 " " $2 "\"" }' $ALIASFILE > > probieren. Das '~' bewirkt ein Regex-Matching, d.h. du kannst bei Bedarf > den Skriptparameter leer lassen und somit eine Gesamtübersicht bekommen > oder mit einem beliebige regulären Ausdruck arbeiten. Wenn natürlich > einige Benutzernamen als Teilstring von anderen vorkommen können, wäre > '==' besser. ..also in der zweiten Zeile des o.a. awk-Aufrufs $2==USERNAME anstelle von $2 ~ USERNAME? Es waere schon wichtig, dass awk bei Angabe von "schmidt" nicht auch "schmidtc" hervorpult... [einige Minuten spaeter] ...was in der Variante mit den beiden Gleichheitszeichen auch erreicht wird: $ ./test2.sh schmidtc schmidtc, "| vacation -A Christian.Schmidt schmidtc" Dagegen: $ ./test2.sh schmidt $ Vielen Dank, Elmar. Das ist so auf den ersten Blick genau das, was ich gesucht habe! > Übrigens: Wenn das Leerzeichen nach dem ':' nicht garantiert ist, > arbeitest du besser mit ":" an Stelle von ": " als Feldtrenner und > trimmst wenn nötig das Leerzeichen in $2 mit gsub o.ä. weg. Ich muss noch einmal nachsehen, meine aber, dass das Leerzeichen garantiert ist. Die aliases.ls wird auf von einem anderen Skript generiert... Gruss, Christian -- Angenehm sind die erledigten Arbeiten. -- Marcus Tullius Cicero (106-43 v.Chr.)
Attachment:
signature.asc
Description: Digital signature