소문자 이메일 주소에만 사용 가능

소문자 이메일 주소에만 사용 가능

예시(임의) 텍스트:

[email protected]:Portuguesa-Span103
[email protected]
[email protected]:Sanchismo103

원하는 출력:

[email protected]:Portuguesa-Span103
[email protected]
[email protected]:Sanchismo103

일반적으로 이것은 제가 사용하는 이메일 주소 정규식입니다.

[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}

각 줄의 형식에 관계없이 모든 이메일 주소를 찾아 간단히 소문자로 만드는 명령을 원합니다. 나머지 줄은 여전히 ​​대문자로 유지합니다(이메일 주소 외에는 아무것도 변경되지 않았습니다).

이것을 사용하기 위해 제가 선호하는 도구는 bash(및 관련 도구)입니다. 어디서부터 시작해야 할지 모르기 때문에 아직 직접 시도해 보지 않았습니다.

저는 Gnu/Cygwin을 사용하고 있습니다.

답변1

GNU sed를 사용하면 다음을 사용할 수 있습니다.

sed -e 's/^\([^@]*\)@/\L\1@/' file

이렇게 하면 줄의 시작 부분부터 첫 번째 @줄까지 모든 내용이 소문자로 변환됩니다. 예를 들어

$ sed -e 's/^\([^@]*\)@/\L\1@/' input.txt
[email protected]:Portuguesa-Span103
[email protected]
[email protected]:Sanchismo103

이메일 주소가 각 줄의 시작 부분에 있지 않거나 한 줄에 여러 개의 이메일 주소가 있을 수 있는 경우 \b대신 ^검색을 고정하고 시작 줄 대신 단어 경계 태그로 바꿀 수 있습니다.

sed -e 's/\b\([^@]*\)@/\L\1@/g' input.txt

답변2

사용하는 정규식이 항상 정확하다면 Perl과 함께 사용할 수 있습니다.

% perl -pe 's/[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}/\L$&/' foo
[email protected]:Portuguesa-Span103
[email protected]
[email protected]:Sanchismo103

$&일치하고 그 뒤의 모든 항목을 소문자로 만드는 텍스트입니다 \L(최대 a \E이지만 여기서는 필요하지 않음).

관련 정보