온라인에서 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는 첫 번째 열이나 현재 로그온한 사용자의 이름을 인쇄합니다.

Terdon이 지적했듯이 이를 세 가지 주장으로 더 좁히면 다음과 같습니다.

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

관련 정보