grep을 사용하여 파일의 특정 줄 나열

grep을 사용하여 파일의 특정 줄 나열

예를 들어 임의의 파일을 사용하여 /usr/share/vim/vim74/tutor/tutor5글자 단어로 시작하는 모든 줄을 나열하는 방법이 있습니까? 5글자 단어로 끝나는 줄은 어떻습니까? 이에 대해 한동안 고민해 왔지만 아직 진전이 없습니다. 누구든지 해결책을 알고 있습니까? (이것이 가능한지는 잘 모르겠습니다. 단지 사고 실험일 뿐입니다.)

답변1

grep -E '(^[[:alpha:]]{5}[^[:alpha:]]|[^[:alpha:]][[:alpha:]]{5}$)' /usr/share/vim/vim74/tutor/tutor

grep -Eegrep 사용

'(a|b)'검색 모드a 또는무늬b

^줄의 시작이요 $줄의 끝이요

[[:alpha:]]{5}연속된 5개의 문자를 나타냅니다.

[^[:alpha:]]편지라는 뜻인가요?

따라서 우리는 egrep을 사용하여 다음을 찾습니다.

  • 줄 시작, 5글자, 그 다음은 글자가 아님.또는
  • 비문자, 5자, 그 다음 줄 끝

답변2

그것은 당신이 의미하는 바에 따라 다릅니다.한 단어, 하지만 좋아

grep -E '^[[:alnum:]]{5}\b'

(다섯문자와 숫자문자 뒤에 단어 경계가 따라오고 줄의 시작 부분에 고정됨) 또는 grep 버전이 Perl 호환 정규 표현식(PCRE)을 지원하는 경우

grep -P '^\w{5}\b' 

(다섯단어 문자줄의 시작 부분에 고정된 단어 경계가 뒤따릅니다. 줄 끝의 경우 이에 해당합니다.

grep -E '\b[[:alnum:]]{5}$' file

또는

grep -P '\b\w{5}$' 

언급한 특정 파일의 경우 대부분의 줄은 선행 공백으로 시작합니다. 이를 무시하려면 grep -E '^[[:space:]]*[[:alnum:]]{5}\b'이와 같은 작업을 수행하거나 이에 상응하는 PCRE 작업을 수행해야 합니다 grep -P '^\s*\w{5}\b'.

관련 정보