sed를 사용하여 영숫자 패턴 제외

sed를 사용하여 영숫자 패턴 제외

Gen ID 보고서를 작성 중인데 현재 계정을 가져오기 위해 사용하고 있는 명령은 egrep필요한 대부분의 계정을 가져오지만 분명히 Gen ID 중 일부가 수행하는 것처럼 숫자로 끝나는 계정은 가져오지 않습니다.

cat /etc/passwd | cut -d: -f1 | egrep '^[a-z]|^[A-Z]' | egrep '[a-z]$|[A-Z]$'

다행스럽게도 우리의 사용자 계정은 모두 동일한 패턴(문자 1개, 숫자 6개)을 따릅니다. sed모든 계정을 인쇄하려면 어떻게 해야 하나요?/etc/passwd 와는 별개로문자로 시작하고 숫자 6개가 오는 것?

답변1

grep -vE '^[[:alpha:]][[:digit:]]{6}:' /etc/passwd

/etc/passwd알파벳 문자로 시작하고 그 뒤에 6자리 숫자가 오는 행을 제외한 모든 행이 인쇄됩니다 :.

핵심은 라인을 인쇄하는 옵션을 -v알려주는 것 입니다grep아니요패턴을 일치시킵니다.

사용자 이름만 원하는 경우:

cut -d : -f 1 < /etc/passwd | grep -vEx '[[:alpha:]][[:digit:]]{6}'

또는 다음을 사용하여 sed:

sed -n '/^[[:alpha:]][[:digit:]]\{6\}:/!s/:.*//p' /etc/passwd

!다시 한 번 이것이 의미하는 바는 다음과 같습니다.아니요.

관련 정보