awk -F: '$3{print}' /etc/passwd shell中这种写法不对吗?为什么输出的是全部内容而不是第三列?
展开全部
直接写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,那么打印整行的全部内容。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询