将/etc/passwd中的用户名,输出到其所使用的shell中的文本文件中,例如,zhangsan用的shell是/bin/bash则把张三的名字输入到文件名为bash的文本文件中。默认所有用户有相应的shell,没有为空等特例。
这个题如果用C来做,应该至少30行代码,perl之类的10以内应该可以完成,今天用awk来做。希望可以在一行内完成。
第一步,取出用户名和shell名,这个简单。
awk -F'[:\/]' '{print $1,$NF}' /etc/passwd
-F'[:\/]'表示,将文件使用:和\作为分隔符分隔,{print $1,$NF}'表示输出分隔后的第一列和最后一列,分别代表用户名和shell名
搞定。
第二步。将用户名定向到shell命名的文件中。
awk -F'[:\/]' '{print $1>>$NF}' /etc/passwd
'{print $1>>$NF}'表示用追加的方式,将$1的内容,追加到$NF命名的文件中
搞定。
第三步。输出到指定目录中的文件里
awk -F'[:\/]' '{print $1>>"/tmp/"$NF}' /etc/passwd
完成任务,一行解决问题,最后需要注意的是tmp目录两边必须加双引号。
没有评论:
发表评论