gawk 부분 상호 참조

gawk 부분 상호 참조

그래서 현재 나는 이 스크립트를 가지고 있습니다

gawk -F: '
    FNR==NR{a[$1][$2]=1;next}
    $2 in a{for(i in a[$2]) print $1 FS i}
' email.phone.txt name.email.txt

이메일.전화 콘텐츠 예:

[email protected]:012345
[email protected]:912345

name.email.txt 예:

Charles:[email protected]
Erica:[email protected]

이것은 출력됩니다

Charles:012345
Charles:912345
Erica:012345
Erica:912345

보시다시피 현재 2개의 파일을 검사하고 email.phone.txt첫 번째 열을 두 번째 열과 name.email.txt일치시킵니다 . 일치하면 name.email.txt첫 번째 email.phone.txt열과 두 번째 열이 출력되어 :구분 기호로 사용됩니다.

문자열의 일부를 일치시키려면 어떻게 해야 합니까?

이와 같이,

이메일.전화 콘텐츠 예:

[email protected]:012345

name.email.txt 예:

Charles:Email@gm

이제 예상되는 출력은 다음과 같습니다.

Charles:012345
Charles:912345

답변1

한 가지 해결책은 독서입니다.이메일그런 다음 정규 표현식이 일치합니다.전화 번호즉각적인:

$ cat email.txt
Charles:Charles@gm
Erica:[email protected]

$ cat tele.txt
[email protected]:012345
[email protected]:912345
$ awk -F ':' 'NR==FNR{ em[$1]=$2 } NR!=FNR{ for(i in em){
                if( $1 ~ em[i] ){ print i":"$2 } } }' email.txt tele.txt
Charles:012345
Erica:912345

관련 정보