5번째 줄의 특정 숫자를 grep하지만 25나 52 등은 해당하지 않습니다.

5번째 줄의 특정 숫자를 grep하지만 25나 52 등은 해당하지 않습니다.

사용자 ID에 대한 사용자를 찾아야 합니다. 인증 시스템의 반환 결과는 다음과 같습니다. 이제 bash 스크립트를 사용하여 정확한 숫자의 행을 추출해야 합니다. 5도 아니고 25도 아니고..

------------
ID  LOGIN   
------------
28  user1
25  user2 
5   user3

사용하면 grep 52개의 행이 생기지만 "5"가 있는 행이 필요합니다.

어떤 아이디어가 있나요?

답변1

이를 수행하는 방법에는 여러 가지가 있습니다.

IMHO 가장 좋은 방법은 을 사용하는 것인데 awk, 이는 필드를 처리할 때 유용합니다.

grep다음을 기반으로 한 솔루션을 원하는 경우 :

grep -w '^5'

정확한 단어와 일치하도록 -w지시 하므로 "52"와 일치하지 않습니다. grep"^"는 grep에게 줄 시작 부분에서 5를 검색하도록 지시합니다. 예를 들어 선행 공백이 있으면 검색이 실패합니다.

해결책은 awk다음과 같습니다:

awk '$1 == 5'

사용자 이름만 원하는 경우 두 번째 열은 다음과 같습니다.

awk '$1 == 5 {print $2}'

숫자 값이 아닌 문자열을 검색하는 경우 문자열을 큰따옴표로 묶습니다.

awk '$1 == "abc" {print $2}'

답변2

정규식(줄의 첫 번째 문자)을 사용하고 공백을 포함할 수 있습니다.

grep -E "^5 "

답변3

다음을 시도해 보십시오:

query-auth-system | grep "^5\\>"
  • ^: "줄의 시작 부분에서 일치함을 의미합니다.
  • \\>: 단어 경계와 일치합니다. 따라서 일치 5하지만 일치하지 않습니다 50.

관련 정보