Grep 정규식 방법

Grep 정규식 방법

안녕하세요. 우편번호가 5자리인 파일이 있습니다.

grep을 사용하여 9로 시작하는 우편번호를 인쇄하려고 하는데 4-7 사이의 숫자만 포함할 수 있습니다.

내가 사용하는 명령은

grep '[4-7], 9'$ zipcodesDataEntry.cvs

문제는 숫자 1 2 3 8이 포함된 우편번호를 받고 있다는 것입니다. 내 출력은 다음과 같아야 합니다.

95544
94554
94445
95567

그러나 다음과 같은 일부 우편번호가 표시됩니다.

91121
92231 

9가 아니고 4-7 범위에 있는 숫자를 제외하려고 합니다.

답변1

이 파일이 주어지면:

cat zipcodes 
95544 94554 94445 92231 95567 91121

이 grep을 사용할 수 있습니다.

egrep -o '9[4-7]{4}' zipcodes 
95544
94554
94445
95567

답변2

입력 파일 내용:

95544 
94554 
94445 
95567
91121 
92231

awk(incase not available)을 사용하면 egrep다음과 같이 시도해 볼 수 있습니다.

awk '/9[4-7]{4}/' zip.txt

출력:

95544 
94554 
94445 
95567

답변3

grep '^9.[4-7].*' 우편번호DataEntry.cvs

  1. ^ 비교되는 문자열의 시작 부분
  2. . (마침표)는 모든 문자와 일치합니다.
  3. 별표, 0개 이상

관련 정보