Re: AWK (kanske) fråga

Anders Magnusson ragge at ludd.ltu.se
Thu May 24 22:14:46 CEST 2018


Min personliga variant av det här (som jag använt en miljon gånger 
ungefär) vore nog:

/^givenName:/{gn=$2;}
/^mail:/{mail=$2;}
/^sn:/{sn=$2;}
/^uid:/{system("samba-tool user add " $2 " --surname=" sn " 
--given-name=" gn " --mail-address=" mail);}

-- Ragge

Den 2018-05-24 kl. 18:10, skrev Daniel Lublin via BUS:
> OK, awk, om du säger det så! Det är ju förvisso trevligt för lite
> text-processande, och har väldigt få beroenden.
>
> Här är en liten ansats, med föga felhantering, och som förutsätter att
> dataformatet du beskriver följs hårt. Särskilt att poster separeras med en
> eller flera tomma rader (RS=""). Man kan ju både tänka sig att man låter
> awk-scriptet spotta ur sig skal-kommandon till en fil (som sedan sourcas),
> alternativt kör man system() direkt i awk.
>
> #!/usr/bin/awk -f
>
> BEGIN { RS=""; FS="\n" }
>
> function strip(s) {
>    sub(/^[[:space:]]+/, "", s)
>    sub(/[[:space:]]+$/, "", s)
>    return s
> }
>
> {
>    delete rec
>    for (i = 1; i <= NF; i++) {
>      sep = index($i, ":")
>      if (sep) {
>        k = substr($i, 0, sep-1)
>        rec[k] = strip(substr($i, sep+1))
>      }
>    }
>    printf("samba-tool user add '%s' --surname='%s'" \
>           " --given-name='%s' --mail-address='%s'\n",
>           rec["uid"], rec["sn"], rec["givenName"], rec["mail"])
> }
> _________________________________________________
> BSD Users Sweden -- BUS at stacken.kth.se
> https://lists.stacken.kth.se/mailman/listinfo/bus



More information about the BUS mailing list