
제거하고 싶은 대문자 단어가 모두 포함된 파일이 많지만 파일에 보관하고 싶은 작은 단어 집합도 있습니다. 정규식에서 이를 어떻게 수행합니까?
예를 들어:
파일 1.txt:
hello_world
HELLO
WORLD
HI
hi
test_string
TEST
TESTING
이 파일의 모든 대문자 단어를 제거하고 싶습니다. 단, TEST
이 방법으로 TESTING
출력하면 다음과 같습니다.
hello_world
hi
test_string
TEST
TESTING
답변1
이를 통해 perl
다음을 수행할 수 있습니다.
perl -C -pe 's/\b(?:(TEST|TESTING)|[\p{Lu}_]+)\b/$1/g' your-file
TEST
및 를 제외하고 단어가 아닌 문자(단어 문자는 숫자 또는 밑줄임)로 구분된 하나 이상의 대문자 또는 밑줄 시퀀스는 제거됩니다 TESTING
.
그러한 단어 하나로 구성된 행을 삭제하려면 다음을 수행하십시오.
sed -E '/^(TEST|TESTING)$/b
/^[[:upper:]_]+$/d' your-file
또는
perl -C -lne 'print if $_ eq "TEST" ||
$_ eq "TESTING" ||
! /^[\p{Lu}_]+$/' your-file
또는:
awk '$0 == "TEST" || $0 == "TESTING" || ! /^[[:upper:]_]+$/' your-file
또는 , , 가 비어 있거나 대문자 및 밑줄 이외의 문자가 하나 이상 포함된 줄의 경우 grep
:TEST
TESTING
grep -E '(^(TEST|TESTING)?$)|[^[:upper:]_]'