On Thu, Nov 27, 2008 at 2:37 PM, Stephen Harris lists@spuddy.org wrote:
On Thu, Nov 27, 2008 at 01:56:11PM -0500, Erick Perez wrote:
So far, cut returns the name up to the space, so in this case it will return Kimaura and not Kimaura Thomas.
No, it doesn't.
# for linia in `cat /etc/passwd`
This is your mistake. Think about it for linia in `cat /etc/passwd` do echo Line just read: $linia done
That shows what is going wrong; the "in" is splitting at the white space.
What you should be doing cat /etc/passwd | while read linia instead.
Even better would be while read linia do .... done < /etc/passwd
Or, to rewrite the whole program in a one line awk script:
awk -F: '{printf("zmprov ma %s@'$domain' displayName %s\n",$1,$5)}' /etc/passwd > $file
--
rgds Stephen _______________________________________________ CentOS mailing list CentOS@centos.org http://lists.centos.org/mailman/listinfo/centos
Stephen, you are right. i learned a bit more about "for" cycles and the blank space was being stripped. Rainer, some backquotes as you said were missing.
So the code ends like this, and it works :))
#while read linia #do # user=`echo $linia | awk -F : '{ print $1 }'` # nombre=`echo $linia | awk -F : '{ print $5 }'` # echo "el nombre es $nombre" # echo "zmprov ma $user@$domain displayName $nombre">>$file # # x=$[x+1] #done < /etc/passwd
Stephen, your single line awk command is wonderful. the while cycle takes about a minute (it is a very very long passwd file) the awk took less than 10 seconds
.........I have so much to learn....