![sed를 사용하여 영숫자 패턴 제외](https://linux55.com/image/106283/sed%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EC%98%81%EC%88%AB%EC%9E%90%20%ED%8C%A8%ED%84%B4%20%EC%A0%9C%EC%99%B8.png)
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
!
다시 한 번 이것이 의미하는 바는 다음과 같습니다.아니요.