用awk命令检查以testuser1218组为主组的用户有哪些
awk -F: '$4 == '"$(grep "^testuser1218:" /etc/group | cut -d: -f3)"'{print "主组为testuser1218的用户:"$1}' /etc/passwd
awk一般是这样写
awk -F分隔符 '筛选条件 {print 要打印的内容}' 文件名
而在上面的命令里,我们可以看到 ‘筛选条件 {print 要打印的内容}’ 被””里的内容拆成了三个部分
'$4 == '
"$(grep "^testuser1218:" /etc/group | cut -d: -f3)"
'{print "主组为testuser1218的用户:"$1}'
为什么这样三段拼接来写呢?
- 单引号 ‘ ‘ 里面的内容,shell 不会解析
- 我们要插入
$(命令),必须跳出单引号
'awk部分' 插入外部命令 'awk部分'
shell 会把紧挨着的字符串自动拼成一个
# 我们看起来是三段,但实际上,它被 shell 自动拼成了 1 段。
'$4 == ' "$(命令)" '{print ...}'
# 实际执行时,shell 自动拼成:
'$4 == 1002 {print ...}'