이메일 주소 추출

이메일 주소 추출

다음과 같은 줄이 포함된 파일이 있습니다.

user=<[email protected]>,
user=<[email protected]>,
user=<[email protected]>,
user=<[email protected]>,
user=<[email protected]>,
user=<[email protected]>,

이 파일에서 이메일 주소를 추출하는 가장 좋은 방법은 무엇입니까?

답변1

awk다른 답변에 제공된 대로 사용할 수 있습니다 .

sed또는 이와 perl유사한 것을 사용할 수 있습니다 ruby.

perl -wlne '/<(.*)>/ and print $1' file

그러나 bash필요에 따라 사용하는 것도 가능합니다.

첫 번째 단계. 파일을 한 줄씩 출력하십시오.

while read line; do echo $line; done <file

다음으로 불필요한 접두사와 접미사를 제거합니다.

while read line; do line=${line##user=<}; line=${line%%>,}; echo $line; done <file

마찬가지로 더 일반적이고 더 짧습니다.

while read line; do line=${line##*<}; echo ${line%%>*}; done <file

이는 귀하의 예에서 작동하며 다른 쉘에서도 작동합니다.

시작과 끝에서 몇 개의 문자만 제거하려면 다음을 사용할 수 있습니다.

while read line; do echo ${line:6:-2}; done <file

man bash자세한 내용은 bash()의 자세한 매뉴얼 페이지를 읽어보세요 .

답변2

아마 이보다 더 좋은 방법이 있을 것 같지만 생각이 나지 않습니다.
awk -F '<|>' '{ print $2 }' filename

답변3

최신 버전에서 bash 사용을 고집하는 경우:

쉘 매개변수 확장:http://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html
문자열 길이:http://wiki.bash-hackers.org/syntax/pe#string_length
하위 문자열 확장:http://wiki.bash-hackers.org/syntax/pe#substring_expansion

#!/bin/bash

while read line; do
    len=$((${#line}-8))
    echo ${line:6:$len}
done < file

관련 정보