goddog@ubuntu:~$ egrep 'goddog' /etc/passwd | awk -F: '{ print $1 " has "$7" as loggin shell." }' goddog has /bin/bash as loggin shell. 如果有一天,boss问你现在咱们公司Linux系统上最流行的shell是哪个?有多少人在运用这个shell?现在你就完全不用调查所有的用户了,命令如下: goddog@ubuntu:~$ awk -F: '{ print $7 }' /etc/passwd | sort | uniq -c 2 /bin/bash 23 /bin/false 1 /bin/sync 16 /usr/sbin/nologin goddog@ubuntu:~$ grep /bin/ /etc/passwd | awk -F: '{ print $1" "$7 }' root /bin/bash sync /bin/sync …… 可是在上例中有一个名为sync的用户运用的是 /bin/sync使用程序。你不想让他出现在显示结果中,于是,你对命令进行了修改,将以上命令的结果通过管道送给sed命令,并由sed命令删除所有包含sync字符串的数据行。命令如下: goddog@ubuntu:~$ grep /bin/ /etc/passwd | awk -F: '{ print $1" "$7 }' | sed '/sync/d' root /bin/bash systemd-network /bin/false …… 虽然去掉了sync用户的数据行,但是显示结果却没有了顺序,因此可以将这个结果通过管道送给sort命令进行排序,命令如下: goddog@ubuntu:~$ grep /bin/ /etc/passwd | awk -F: '{ print $1 " " $7 }' | sed '/sync/d' | sort _apt /bin/false avahi-autoipd /bin/false …… 以上所有例子告诉我们这样一个事实,那就是编程并不需要一步到位,而是一步步加以完善的。开发大型软件也是一样,许多软件在刚刚发行时,bugs满天飞,但是厂家照样卖,然后是一边卖一边改进。 |