首先copy一份/etc/passwd如下:
jones:*:32713:889:Adrian W. Jones/OSD211/555-0123:/home/jones:/bin/ksh
dorothy:*:123:30:Dorothy Gale/KNS321/555-0044:/home/dorothy:/bin/bash
toto:*:1027:18:Toto Gale/KNS322/555-0045:/home/toto:/bin/tcsh
ben:*:301:10:Ben Franklin/OSD212/555-0022:/home/ben:/bin/bash
jhancock:*:1457:57:Jhon Hancock/SIG435/555-0099:/home/jhancock:/bin/bash
betsy:*:110:20:Betsy Ross/BMD17/555-0033:/home/betsy:/bin/ksh
tj:*:60:33:Thomas Jefferson/BMD19/555-0095:/home/tj:/bin/bash
george:*:692:42:George Washington/BST999/555-0001:/home/george:/bin/tcsh
con.sh脚本:
#/bin/bash
PERSON="/tmp/pd.key.person"
OFFICE="/tmp/pd.key.office"
TEL="/tmp/pd.key.tel"
USER="/tmp/pd.key.user"
awk -F: '{ print $1":"$5 }' > $USER
sed -e 's=/.*==' -e 's=^\([^:]*\):\(.*\) \([^ ]*\)$=\1:\3 \2=' $USER | sort > $PERSON
sed 's=^\([^:]*\):[^/]*/\([^/]*\)/.*$=\1:\2=' $USER | sort > $OFFICE
sed 's=^\([^:]*\):[^/]*/[^/]*/\(.*\)$=\1:\2=' $USER | sort > $TEL
join -t: $PERSON $OFFICE |
join -t: - $TEL |
cut -d: -f 2- |
awk -F: '{printf("%-39s\t%s\t%s\n",$1,$2,$3)}'
rm $PERSON
rm $OFFICE
rm $USER
rm $TEL
[root@localhost ch5]# ./con.sh < passwd.txt