예를 들어 임의의 파일을 사용하여 /usr/share/vim/vim74/tutor/tutor
5글자 단어로 시작하는 모든 줄을 나열하는 방법이 있습니까? 5글자 단어로 끝나는 줄은 어떻습니까? 이에 대해 한동안 고민해 왔지만 아직 진전이 없습니다. 누구든지 해결책을 알고 있습니까? (이것이 가능한지는 잘 모르겠습니다. 단지 사고 실험일 뿐입니다.)
답변1
grep -E '(^[[:alpha:]]{5}[^[:alpha:]]|[^[:alpha:]][[:alpha:]]{5}$)' /usr/share/vim/vim74/tutor/tutor
grep -E
egrep 사용
'(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'
.