Bash szkript segítség kéne!(Megoldva)

Sziasztok!

A feladat amiben segítségre lenne szükségem:

/etc/group tartalmát szeretném egy tömbbe beolvasni, hogy később szűrni tudjam a tartalmát stb...

Keresgéltem már neten de egyik tipp se jött be idáig. :( Minden tanácsot szívesen fogadok! :)

Hozzászólások

Biztos van egyszerűbb megoldás is.
i=0
for line in `cat /etc/group`; do
tomb[$i]=$line
let "i=i+1"
done

Egyébként a cél az lenne, hogy a tartalmát belolvassuk az /etc/group-nak majd abból meghatározott oszlopokat/sorokat egy xml fájlba áthelyezzük..

Ismerve a hátteret: tkp. a passwd és a group fájlból kell egy csoport-tagság listát összevágni, a gecos adott mintájú feldarabolásával.

Tipikus awk-ra 50 sor alatt szellősen hangszerelhető

FILENAME == "x" { }
FILENAME == "y" { }

mintákkal tömbfeltöltős feladat, opcionálisan END mintával.

... amely persze sokkal több munkával és processzhívással megoldható shellel is.

A lényeg kb. ennyi, a többi formázás és hibakezelés:


BEGIN {
   FS = ":"
}

FILENAME == "/etc/group" {
   agroups[$3] = $1
   amembers0[$3] = $NF
}

FILENAME == "/etc/passwd" {
   if ( amembers0[$4]) {
      amembers0[$4] = amembers0[$4] "," $1
   } else {
      amembers0[$4] = $1
   }
   agecos0[$1] = $5

}

END {
   for (gid in agroups) {
      print agroups[gid]
      nm = split( amembers0[gid], amembers, /,/)
      for (im=1; im<=nm; ++im) {
         member = amembers[im]
         split( agecos0[member], agecos, /;/)
         printf "\t{%s} {%s} {%s} {%s}\n", member, agecos[1], agecos[2], agecos[3]
      }
   }
}

Köszönöm uraim, hogy megosztottátok velem a tudásotokat! :) *bow*