是否有 awk 命令用于搜索用户是否登录?

是否有 awk 命令用于搜索用户是否登录?

我不确定 awk 如何允许您查看某人是否在线,因为它用于操作文本文件。我知道如何使用 grep 命令来做到这一点,就像

 who | grep 'name'

然后它会显示该人是否登录。awk 的语法是

awk options 'selection _criteria {action }' input-file

如果 awk 通常用于操作文件,那么您如何才能找到使用 awk 的人呢?

答案1

#! /bin/sh -

is_logged_in() {
  who | USER=$1 awk -v ret=1 '
    $1"" == ENVIRON["USER"]"" {ret = 0; exit}
    END {exit(ret)}'
}

if is_logged_in root; then
  echo root is logged in
fi

这定义了一个is_logged_in 函数,以用户名作为参数。我们将已在环境变量中传递函数参数的输出提供给who该输出。awkUSER

awk代码依次处理每条记录。如果记录中的第一个字段等于该环境变量的值(此处附加""到操作数以强制进行字符串比较),则我们以 0(成功)退出状态退出。

然后可以在语句中使用该函数if来检查用户是否登录。

答案2

只是使用 awk 和外部命令的可能方法之一的示例:

is_logged($1) { print $1, "is present!"}

function is_logged(x,a){                     ## a local var
  "who|grep -w " x | getline a
  return a
}

进而:

$ awk -f test
abc
Darunia

--> Darunia is present!

相关内容