LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1143|回复: 5

AWK疑问

[复制链接]
发表于 2008-12-13 22:19:20 | 显示全部楼层 |阅读模式
想要使用who指令显示指定用户的信息,我写的是:

who | grep ^NAME

NAME是变量,但是这样只能显示开头为NAME的用户,感觉应该使用AWK,可是我对这个不怎么熟,请问应该怎么改呢?
 楼主| 发表于 2008-12-13 22:47:17 | 显示全部楼层
我写了一下:who| awk '{if($1=="root") print $1}',这个可以的,但是改到shell中以后

NAME=$1(获取参数)
who| awk '{if($1==NAME) print $1}'
这样就不对了,请问哪个NAME应该怎么写啊???
回复 支持 反对

使用道具 举报

发表于 2008-12-14 01:21:11 | 显示全部楼层
who| awk '{if($1==NAME) print $1}' NAME=$1
回复 支持 反对

使用道具 举报

发表于 2008-12-17 15:20:55 | 显示全部楼层
who |grep ^$1
回复 支持 反对

使用道具 举报

发表于 2008-12-26 16:12:55 | 显示全部楼层
我理解你可能是想在awk中引用外部的变量。下面给你各例子希望能解答你的问题:
NAME=$1(获取参数)
who |awk '$1~/'$NAME'/ {print $1}'

在awk的表达式中用单引号即可引用 外部变量
回复 支持 反对

使用道具 举报

发表于 2008-12-26 23:33:21 | 显示全部楼层
Post by romejiang;1930076

......
在awk的表达式中用单引号即可引用 外部变量


如果你是这么想的,就有错了。

事实上应该和你说的正好相反,你在awk表达式中使用的 ”引用“ :先用单引号来结束前面的引用,然后引用Shell变量,再用单引号开始新的引用。
由于引号不分前后,所以你可能会理解错。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表