
대문자로 표시된 단어가 포함된 명령문이 포함된 파일이 있습니다. 예를 들면 다음과 같습니다.
public final Foo BAR;
이러한 진술은 모두 균일하지 않습니다. 한 줄에서 대문자가 포함된 단어만 찾는 방법이 있나요? 나는 대문자가 포함된 줄을 찾는 방법을 알고 있지만 그것은 내가 원하는 것이 아닙니다. 대문자와 일치하는 단어만 원합니다. 감사해요!
답변1
실제로 -o
스위치를 사용하면 GNU는 grep
일치하는 것만 반환합니다. 어때요?
grep -oP "\w*[A-Z]+\w*" yourfile.txt
이 정규 표현식은 대문자가 포함된 단어와 일치합니다.어딘가에그 중에서도 반드시 시작은 아닙니다. 서로 다른 경우 필요에 맞게 조정해야 합니다.
아래에서 설명하는 것처럼 이는 가장 이식성이 뛰어난 솔루션이 아닐 수 있습니다. Perl의 이식 가능한 대안은 다음과 같습니다.
perl -nE 'say $1 while /(\w*[A-Z]+\w*)/g' yourfile.txt
답변2
sed
전체 줄 대신 문자열을 반환 할 수 있습니다 .
sed 's/.*\([A-Z]*\).*/\1/g' <file>
또는
sed 's/[a-z]*\| //g' <file>
답변3
이것POSIX 기본 정규식 표준grep
vim
( , , 등 의 기본값 ) 및 를 less
사용 하여 단어 경계를 나타냅니다. 이를 통해 문자 뒤에 공백이 오는 것은 물론 따옴표, 대시, 등호 등과 같은 영숫자가 아닌 문자도 허용됩니다. 새 줄에 각 일치 항목을 인쇄하려면 이 옵션을 사용하십시오 .sed
\<
\>
-o
grep -o '\<[A-Z][a-z]*\>' yourfile.txt
다시 말하지만, 필요에 맞게 정규식을 변경해야 할 수도 있습니다. 숫자나 두 번째 대문자를 허용할 수도 있습니다..? 이것은 둘 다 가능합니다 ...
grep -o '\<[A-Z][a-z0-9]*[A-Z][a-z0-9]*\>' yourfile.txt