Re: AWK (kanske) fråga

Leif Larsson leif.larsson at l3system.se
Fri May 25 13:03:47 CEST 2018


Jag har alltid varit lite feg med svenska tecken, så alla användarna har
fått AAO istället för dom svenska motsvarigheterna.

On 05/25/2018 12:28 PM, Mattias Pantzare wrote:
> Kom ihåg att testa med någon med åä eller ö i namnet. Strängar som
> innehåller sånt blir base64-kodade om filen följer standarden.
> 
> On Fri, May 25, 2018 at 9:30 AM Leif Larsson via BUS <bus at stacken.kth.se
> <mailto:bus at stacken.kth.se>> wrote:
> 
>     Man får verkligen inspiration och ideer, det är exakt såhär jag höll på
>     att traggla men nådde inte riktigt fram.
> 
>     Känns som när man kikade i facit lite för tidigt i skolan.
> 
>     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 <mailto:BUS at stacken.kth.se>
>     >> https://lists.stacken.kth.se/mailman/listinfo/bus
>     >
>     > _________________________________________________
>     > BSD Users Sweden -- BUS at stacken.kth.se <mailto:BUS at stacken.kth.se>
>     > https://lists.stacken.kth.se/mailman/listinfo/bus
>     _________________________________________________
>     BSD Users Sweden -- BUS at stacken.kth.se <mailto:BUS at stacken.kth.se>
>     https://lists.stacken.kth.se/mailman/listinfo/bus
> 


More information about the BUS mailing list