[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Melhoria de script [base passwd]
From: |
Thobias Salazar Trevisan |
Subject: |
Re: [shell-script] Melhoria de script [base passwd] |
Date: |
Wed, 26 Mar 2003 18:53:56 -0300 (EST) |
ola lista.
fiz um benchmark rapido aqui para este problema.
boot da maquina em modo texto para limpar memoria...
e peguei a execucao da primeira execucao, pois apos a primeira os
programas, arquivos... ficam tudo no buffer do kernel, ai a
proxima execucao e muuuiiitooo mais rapida.
$ wc -l file
57
=====================================================
1 solucao
for i in $(cat file | cut -f1 -d ':') ; do
ID=$(cat file | grep -e "^$i:" | cut -f3 -d ':')
GID=$(cat file | grep -e "^$i:" | cut -f4 -d ':')
echo "Login: $i"
echo "Id: $ID"
echo "Gid: $GID"
done
real 0m1.784s
user 0m1.140s
sys 0m0.510s
=====================================================
2 solucao
IFS=":"
cut -f1,3,4 -d':' file|\
while read NLOGIN NUID NGID
do
echo "Login: $NLOGIN"
echo "ID: $NUID"
echo "GID: $NGID"
done
real 0m0.060s
user 0m0.000s
sys 0m0.000s
=====================================================
3 solucao
for i in $(cat file |cut -d':' -f1,3,4); do
echo "Login: `echo $i|cut -f1 -d':'`"
echo "Id: `echo $i|cut -f2 -d':'`"
echo "Gid: `echo $i|cut -f3 -d':'`"
done
real 0m0.839s
user 0m0.280s
sys 0m0.320s
=====================================================
4 solucao
#!/bin/bash
IFS=":"
exec 3<./file
while read user senha uid gid descricao home shell
do
echo "Login: $user"
echo "Id : $uid"
echo "Gid : $gid"
done <&3
3<&-
real 0m0.016s
user 0m0.020s
sys 0m0.000s
=====================================================
5 solucao
awk -F: '{print "Login: "$1"\nId: "$3"\nGid:"$4}' file
real 0m0.095s
user 0m0.000s
sys 0m0.000s
=====================================================
6 solucao
sed 's/\(.*\):\(.*\):\([0-9]\+\):\([0-9]\+\):\(.*\)/Login: \1\
Id: \3\
Gid: \4/' file
real 0m0.035s
user 0m0.010s
sys 0m0.000s
Melhores solucoes: 4 (somente bash), 6 (sed), 2 (IFS;cut;while)
e 5 (awk)
para uma avaliacao melhor deste 'benchmark' seria melhor boot em
single user para tirar alguns daemons....
Mas me lembrei disto soh agora e tenho que ir pra
casa... se alguem quiser refazer, ai estao todas as solucoes
propostas. Se alguem tiver mais alguma ideia. :)
Abraco!
thobias
-------
echo 24883721290304465999833114447114149701898P | dc
-------
http://www.lcp.coppe.ufrj.br/~thobias
____________________________
|
| Against - HTML Mail
| Against - MS ATTACHMENTS
|
----------------------------