[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [OT] awk-Akrobatik



Hallo!

On 22 Sep 2004 at 14:01 +0200, Christian Schmidt wrote:

> gerade tueftele ich an einem Wrapper fuer "vacation" herum, der ein
> ~/.forward-File in folgendem Format erzeugen soll:
> benutzername, "| vacation -A alias benutzername"

> Der Alias stellt dabei das Konstrukt Vorname.Nachname dar; die Aliasse
> aller Benutzer liegen in _einer_ Datei:
> Vorname.Nachname: benutzername

> 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.

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.

Ü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.

Gruß,
Elmar

-- 
[ GnuPG: D8A88C0D / 2407 063C 1C92 90E9 4766 B170 5E95 0D7F D8A8 8C0D ]
·······································································
  There is no sadder sight than a young pessimist.

Attachment: pgpzpa5TXATja.pgp
Description: PGP signature


Reply to: