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
.awk
USER
코드 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!