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