awk -F: '$3{print}' /etc/passwd shell中这种写法不对吗?为什么输出的是全部内容而不是第三列?

 我来答
小米飞猫
推荐于2017-07-24 · 专注于IT监控领域技术
小米飞猫
采纳数:1651 获赞数:4811

向TA提问 私信TA
展开全部

直接写print 是打印全部,你要光打印$3应该

awk -F: '{print $3}'
追问
那为什么 awk -F: 'NR==1{print}' 也是print但是打印的不是全部呢?
同样都是pirnt之前加了一个条件,但是$3不能生效,NR却能生效???
追答

NR是awk内置变量,Number of Records的缩写,表示当前记录条数(也就是文件行数)

awk -F: 'NR==1{print}'

是打印第一行全部内容。

NR最初是0,每读取一行增加1 当NR==1,则执行print打印当前行全部内容。

awk是按行去读取内容,整行的全部内容。



$1~$n 在这里也属于awk的一种内置变量代表第几列

awk -F: '{print $3}'

打印第3列内容,以:号为分隔符。



所以这种内置变量,建议还是多按照文档仔细练习自己揣摩一下。

这里附送点题外话,比如我想打印出passwd文件第三列匹配0的行。

awk -F":" '{if($3==0){print}}' /etc/passwd

如果第三列是0,那么打印整行的全部内容。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式