![grep의 숫자 범위에서 단일 숫자만 일치시킵니다.](https://linux55.com/image/189334/grep%EC%9D%98%20%EC%88%AB%EC%9E%90%20%EB%B2%94%EC%9C%84%EC%97%90%EC%84%9C%20%EB%8B%A8%EC%9D%BC%20%EC%88%AB%EC%9E%90%EB%A7%8C%20%EC%9D%BC%EC%B9%98%EC%8B%9C%ED%82%B5%EB%8B%88%EB%8B%A4..png)
다음과 같은 파일이 있는 경우:
hostname1.domain.com
hostname2.domain.com
hostname3.domain.com
hostname23.domain.com
hostname1234.domain.com
어떻게 grep
반품할 수 있나요?
hostname1.domain.com
hostname2.domain.com
hostname3.domain.com
이렇게 하면 숫자만 반환됩니다. 노력하고있어:
grep -E hostname[+1,+2,+3].domain.com
이 방법이 효과가 있는 것 같지만 더 좋은 방법이 있는지 궁금합니다.
답변1
하다:
grep 'hostname[0-9]\.domain\.com' infile
[0-9]
0~9 사이의 단일 숫자를 일치시키려면 점을 문자 그대로 일치시키도록 점을 이스케이프해야 합니다 .
. 그렇지 않으면 임의의 단일 문자(단 줄 바꿈)와 일치하고 와일드카드와 같은 특수 항목에 대한 쉘의 혼란을 피하기 위해 항상 패턴을 인용하는 것을 의미합니다. 중괄호 확장 또는 기타)에 대해 설명합니다.
호스트 이름 1, 2, 3으로만 제한하려면 다음을 수행할 수 있습니다.
grep 'hostname[123]\.domain\.com' infile
또는 동등하게:
grep 'hostname[1-3]\.domain\.com' infile
사용할 수도 있습니다 -x
(전체 줄과 정확히 일치하는 일치 항목만 선택하거나 줄 ^
시작 및 $
끝 앵커로 묶음).
grep -x 'hostname[0-9]\.domain\.com' infile
grep '^hostname[0-9]\.domain\.com$' infile
문자열을 정확하게 일치시키고 hostname23.domain.com
다른 것은 없습니다.
grep -xF 'hostname23.domain.com' infile
바라보다사람들은 grep-F
스위치와 여기에 탈출 지점이 없는 이유에 대해 설명합니다 .