온라인에서 3명의 다른 사용자를 검색하고 인쇄하는 스크립트

온라인에서 3명의 다른 사용자를 검색하고 인쇄하는 스크립트

사용자가 온라인 상태인지 확인하기 위해 3가지 다른 매개변수(사용자 이름)를 입력할 수 있는 스크립트를 만들려고 합니다.

현재 검색된 사람을 표시할 수 who | grep "^$1"있는데, 예를 들어 2달러와 3달러를 추가하려고 하면

who | grep "^$1" "^$2" "^$3"

해당 파일이나 디렉터리가 없다는 오류가 발생하지만 매개변수가 하나만 있으면 제대로 작동합니다. 어떤 제안이 있으십니까?

답변1

who | grep -e "^$1" -e "^$2" -e "^$3"해야 할 것

답변2

Grep은 사용하는 정규식 엔진의 유형에 따라 다르게 동작합니다. 기본적으로 다음을 사용합니다.기본 정규식하지만 그것은 또한 사용될 수 있습니다확장 정규식그리고 이 기능을 지원하는 버전 -E에서는grepPerl 호환 정규식그리고 -P.

BRE는 더 이상 두 가지 패턴만 검색할 수 있습니다. 구문은 다음과 같습니다.

grep 'pattern1\|pattern2'

ERE와 PCRE는 임의의 숫자를 검색할 수 있으며 구문은 이 점에서 동일하며 옵션 플래그만 변경됩니다.

grep -E 'pattern1|pattern2|pattern3|patternN'
grep -P 'pattern1|pattern2|pattern3|patternN'

따라서 귀하의 경우 다음을 수행할 수 있습니다.

who | grep -E "^$1|^$2|^$3"

답변3

나는 이렇게 하는 것을 추천한다:

who | awk '{print $1}'

awk는 첫 번째 열 또는 현재 로그인된 사용자 이름을 인쇄합니다.

Terden이 지적했듯이 이를 세 가지 주장으로 더욱 좁힙니다.

who | awk -v one=$1 -v two=$2 -v three=$3 '$1==one||$1==two||$1==three'

관련 정보