파일에서 이메일 주소만 인쇄하려고 합니다. 파일 형식은 다음과 같습니다.
{"12":"34","email":"[email protected]","firstname":"john","lastname":"smith","text":"0","sig":"js","..":"2017-08-23"}
awk -F를 사용하여 어떻게 추출할 수 있나요? 따라서 awk -F'"' '{print $8}'를 사용할 수 있지만 열 8이 항상 이메일 주소가 아닐 수도 있습니다.
"@" 정규식에 awk -F를 사용할 수 있는 방법이 있나요? 또는 구분 기호의 모든 텍스트를 별도의 줄에 인쇄하고 grep '@'로 파이프하십시오.
감사해요
답변1
답변2
이것은 한 가지 awk
방법입니다.
awk -v RS=\" '/@/' infile.txt
위의 내용은 참조 필드가 있을 때 정확합니다. 그렇지 않으면 여러 RecordSeperator가 있는 RS가 있어야 합니다. RS='[[:blank:]]*:'
귀하의 의견의 예와 같습니다.
답변3
reg-ex가 RFC 5322를 완전히 준수하려면 조정이 필요할 수 있지만 초보자라면 다음을 시도해 보십시오.
awk '{match($0,"[a-zA-z0-9._%+-]+@[a-zA-z0-9._%+-]",a)}END{print a[0]}'