정규식: 같은 문자로 시작하는 성과 이름 찾기

정규식: 같은 문자로 시작하는 성과 이름 찾기

파일 내용에서 동일한 문자로 시작하는 이름과 성이 포함된 줄을 찾아야 하는 작업이 있습니다. 내가 시도한 모든 것은 이름의 첫 글자만 검색하거나 아무것도 출력하지 않습니다. 이 문제를 처리하는 방법에 대한 지침을 얻을 수 있습니까?

구문 분석해야 하는 데이터:

Frank Smith
Jim Jones
William Tuft
Jill Johnston
Fred White
Sue Cream
Barbara Bennett
Jeff Gordo

이 egrep 명령을 사용하여 알아냈습니다.

egrep '(J[a-z]+ J)' addresses.txt

*개인정보 보호를 위해 주소를 지웠습니다

답변1

$ grep -E '^[[:space:]]*([[:alpha:]])[[:alpha:]]*[[:space:]]+\1' yourfile.txt

grep명령은 다음을 검색합니다.당신의 파일.txt을 위한:

  1. *줄 시작 부분에 공백 문자(0 이상을 의미), 그 뒤에 공백 문자
  2. 정확히 하나의 알파벳 문자이고 그 뒤에는
  3. 임의의 수의 알파벳 문자( *0 이상을 의미), 그 뒤에
  4. 최소한 하나의 공백 문자( +1개 이상을 의미), 그 뒤에
  5. 2단계에서 일치하는 문자입니다. 이것은\1역참조실제 일치하는 문자열에첫 번째괄호로 묶인 표현.

참고: 다음 명령(사용기초적인바꾸다확장하다정규 표현식)은 위에 주어진 것과 동일한 효과를 갖습니다:

$ grep '^[[:space:]]*\([[:alpha:]]\)[[:alpha:]]*[[:space:]]\+\1' yourfile.txt

답변2

이름 목록이 있다고 가정합니다.

$ cat file
George Washington
Ronald Reagan
Barack Obama
Donald Trump

$ awk 'substr($1,1,1) == substr($NF,1,1)' file
Ronald Reagan

(= 성 필드)를 성으로 사용하면 $NF중간 이름이 있으면 잘 작동하지만 Jr.또는 같은 접미사가 있으면 비참하게 실패합니다.Mr.Dr.

답변3

egrep '(J[a-z]+ J)' file.txt

산출:

짐 존스

질 존스턴

관련 정보