在Unix中使用awk命令打印用户名

时间:2013-03-19 12:47:24

标签: unix awk

我是unix的新手,并试图理解下面的awk命令:

AWK=/bin/awk
RUID=`/usr/bin/id|$AWK -F\( '{print $2}'|$AWK -F\) '{print $1}'`
echo $RUID

该命令正在打印登录的用户名,但是如何使用此命令提取用户名。

2 个答案:

答案 0 :(得分:7)

也许你可以试试这个:

whoami

如果你真的想用awk

这样做
$ id |awk -F'[)(]' '{print $2}'
kent

编辑(评论)

当然还有其他方法可以获取当前登录用户名/ id:

获取用户名

kent$  id -un
kent

kent$  echo $USER 
kent

kent$  echo $USERNAME 
kent

仅获取UID

kent$  echo $UID 
1000

kent$  id -u
1000

答案 1 :(得分:6)

该命令使用-F参数将id命令的输出拆分为给定字符,第一个为(,第二个为)。不确定你是否熟悉管道?

使用print $2然后打印第二部分,即第一次出现(之后的部分,直到下一次出现。您可以通过手动调用命令来查看其工作原理:

/usr/bin/id| $AWK -F\( '{print $2}'

返回username) gid=1000

然后再次调用awk分割awk上第一次)运行产生的字符串,然后在第一个)之前打印该部分。

但是,通过调用/usr/bin/id -un甚至更简单的whoami可以实现同样的效果。

同时尝试运行没有参数的/usr/bin/id命令,以查看awk正在解析的原始输出。