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! :)
- 4445 megtekintés
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
- A hozzászóláshoz be kell jelentkezni
#!/bin/bash
tomb=( $(cat /etc/group) )
for elem in "${tomb[@]}"; do
echo $elem
done
- A hozzászóláshoz be kell jelentkezni
"tomb=( $(cat /etc/group) )"<-Túl egyszerű volt, hogy eszembe jusson pedig használtam már így :D köszi.
- A hozzászóláshoz be kell jelentkezni
eddig működik! Köszönöm. :)
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
lehet, hogy csak az lesz belőle a végén... :-/
- A hozzászóláshoz be kell jelentkezni
Miért kezdtél el gondolkodni más megoldáson?
--
HUPbeszolas FF extension
- A hozzászóláshoz be kell jelentkezni
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..
- A hozzászóláshoz be kell jelentkezni
awk -F: '$1 ~ /scanner/ {print $3, $4}' /etc/group
B=($(awk -F: '$1 ~ /s/ {print $3}' /etc/group))
fisher@ap:~$ echo ${B[1]}
6
fisher@ap:~$ echo ${B[4]}
38
Bár xml fájl matatására a read és egy egyszerű template lenne a legjobb szerintem, kár a tömbbel mókolni.
- A hozzászóláshoz be kell jelentkezni
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 hozzászóláshoz be kell jelentkezni
Így van az lenne a feladat. De te mire gondolsz pontosan melyik megoldásra?
- A hozzászóláshoz be kell jelentkezni
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]
}
}
}
- A hozzászóláshoz be kell jelentkezni
Köszönöm.
- A hozzászóláshoz be kell jelentkezni
Akkor inkabb awk:
awk 'BEGIN { FS=":" } { printf "<xml-tag>%s<masik-xml-tag>%s\n",$1,$3 }' /etc/group
- A hozzászóláshoz be kell jelentkezni
Köszönöm uraim, hogy megosztottátok velem a tudásotokat! :) *bow*
- A hozzászóláshoz be kell jelentkezni
up....
- A hozzászóláshoz be kell jelentkezni
Hogy tudom a kiszűrt tartalmat egy fájlban elraktározni? Külön ciklus vagy ugyanabban meglehet oldani? Köszi.
- A hozzászóláshoz be kell jelentkezni