Re: AWK (kanske) fråga

Leif Larsson leif.larsson at l3system.se
Fri May 25 14:16:54 CEST 2018


Tack båda två för förslagen, båda fungerar kanon!

On 05/24/2018 10:14 PM, Anders Magnusson via BUS wrote:
> 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
> 
> _________________________________________________
> BSD Users Sweden -- BUS at stacken.kth.se
> https://lists.stacken.kth.se/mailman/listinfo/bus


More information about the BUS mailing list