AWK (kanske) fråga

Daniel Lublin daniel at lublin.se
Thu May 24 18:10:47 CEST 2018


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"])
}


More information about the BUS mailing list